java - 简单: efficiency of ' if '

标签 java performance if-statement

我没有可以询问效率问题的老师,所以我会在这里问。

如果我只希望有快速工作的代码,不关注内存使用,只关注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/

相关文章:

java - Mongo 3.0.2 驱动程序 : how to escape dots(. )在字符串中?

java - 从对象列表中获取最后更新记录时使用 map 的正确方法是什么

performance - 如何在不使用 for 循环的情况下根据相应列中特定值的出现次数对矩阵进行排序?

java - 为什么在循环中进行计算会减慢将打印写入控制台但不会减慢写入文件的速度?

javascript - 如何使用 JSON 将数组本地化然后将其解析为页面

java - 是否将int初始化为0?

java - 使用扫描仪类读取 .txt 时出错

java - Integer 和 int 数组的 containsAll 行为差异 (Java)

vba - Excel VBA : Single Loop + If-Statement; Run-time Error 1004

c# - 尝试使用 Else 语句 C# 的初学者?