use*_*036 2 java performance if-statement
我没有老师,我可以提出有关效率的问题,所以我会在这里问一下.
如果我只想要快速工作代码,不注意ram使用,只有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;
}
Run Code Online (Sandbox Code Playgroud)
我想是前.2将比ex更快地工作.1因为'a'始终保持在'5'.在这种情况下,"if"通过不每次都向'a'写入新值来加速该过程.但是,如果'a'经常变化,就像在ex.3,然后检查是否(a!= 5)是不必要的并且减慢过程.因此,如果变量在大多数时间保持不变,那么这种检查是值得的; 如果变量大部分时间都在变化,那就不值得了.但这个比例在哪里?也许写一个变量需要花费1000倍于检查它的时间?或者写作几乎与检查时间相同?我不是要求一个确切的答案,我总是想知道什么是我的代码最好的.
简短的回答:没关系.
答案很长:在那么低的水平上真的没关系.即使您实际比较执行的机器代码,其间也有很多东西(一个是JIT编译器,另一个是各种CPU缓存).
你需要微观优化这样的事情的时候已经过去了.您需要确保的是您正在使用有效的算法.和往常一样,过早优化是万恶之源.
我注意到你写道"我总是想知道什么是我代码的最佳方式".最好的方法是编写清晰的代码,以便其他人可以理解你在做什么(如果他们看到你的例子中的代码,他们会认为你是疯了).另一个古老的格言是,为了让JVM以最佳方式优化您的代码,您应该编写"哑代码".然后,JIT优化器可以更好地理解代码并将其转换为更有效的形式.