【发布时间】:2013-02-20 02:28:11
【问题描述】:
这似乎是一个有点愚蠢的问题。也许它是。但我有一个我经常使用的功能,想知道这是否是完成这项工作的最快方法。该功能被使用了很多次,以至于任何速度的提高实际上都是显而易见的。它所做的只是检查一个字符是否是一个核苷酸(即:如果一个字符是 'A'、'T'、'C' 或 'G'。
private static boolean isValidNucleotide(char nucleotide) {
nucleotide = Character.toUpperCase(nucleotide);
if(nucleotide == 'A') return true;
if(nucleotide == 'T') return true;
if(nucleotide == 'C') return true;
if(nucleotide == 'G') return true;
return false;
}
这是完成工作的最快方法吗?还是您认为值得实现某种索引/映射/其他东西(可能在函数之外执行比较,然后将此文本复制到代码中的几个位置)?我真的不是 Java 中这类事情的专家。
【问题讨论】:
-
退后一步,重新审视实际的问题,而不是你的解决方案。实际上,以完全不同的方式执行此操作可能会更快,例如,预先限制用户输入,或尽早检查整个核苷酸序列,以便以后无需重复检查。甚至可能有理由(如果您更关心速度而不是有效性)根本不检查。
-
@paxdiablo 感谢您的建议。我确实接受了答案,但这些 cmets 绝对值得考虑。我确实必须验证,但可能有一种方法可以限制链中较早的输入。
标签: java performance search character