我没有可以询问效率问题的老师,所以我会在这里问。
如果我只希望有快速工作的代码,不关注内存使用,只关注CPU:
我认为检查一次“if”比写入一次变量更快。但比例是多少呢?什么时候值得经常检查变量是否尚未达到我要设置的值?
例如:
//ex. 1
int a = 5;
while (true) {
a = 5;
}
//ex. 2
int a = 5;
while (true) {
if (a != 5) a = 5;
}
//ex. 3
int a = 6;
while (true) {
if (a != 5) a = 5;
a = 6;
}
我猜是前。 2 会比 ex 工作得更快。 1 因为“a”始终保持为“5”。在这种情况下,“if”不会每次都向“a”写入新值,从而加快进程速度。但如果“a”经常变化,就像 ex 中那样。 3,然后检查 (a != 5) 是否不必要并减慢进程。因此,如果变量大部分时间保持不变,那么这种检查是值得的;如果变量大部分时间都在变化,那就不值得了。但比例在哪里?也许写入一个变量比仅仅检查它花费的时间多 1000 倍?或者也许写作和检查几乎花费相同的时间?我并不要求确切的答案,我只是总是想知道什么最适合我的代码。
最佳答案
简短回答:没关系。
长答案:在那么低的水平上这真的不重要。即使您要实际比较执行的机器代码,两者之间也有很多东西(其中之一是 JIT 编译器,其他则是各种 CPU 缓存)。
您需要对此类事情进行微观优化的时代已经一去不复返了。您需要确保您使用的是有效的算法。一如既往,过早的优化是万恶之源。
我注意到您写道“我总是想知道什么是我的代码的最佳方式”。最好的方法是编写清晰的代码,以便其他人可以理解你在做什么(如果他们看到你的示例中的代码,他们会认为你疯了)。另一个古老的格言是,为了让 JVM 以最好的方式优化你的代码,你应该编写“哑代码”。然后,JIT 优化器可以更好地理解代码并将其转换为更有效的形式。
关于java - 简单: efficiency of ' if ' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22863844/