【发布时间】:2013-03-08 02:38:17
【问题描述】:
我想深入了解何时(忽略可用内存空间)存储比较结果而不是重新计算它是有意义的。证明存储所产生的时间成本合理的临界点是什么?是 2 次、3 次还是 4 次比较?更多?
例如,在这种特殊情况下,哪个选项(通常)在速度方面表现更好?
选项 1:
int result = id.compareTo(node.id);
return result > 0 ? 1 : result < 0 ? -1 : 0;
选项 2:
return id.compareTo(node.id) > 0 ? 1 : id.compareTo(node.id) < 0 ? -1 : 0;
我试图自己分析这两个选项以回答我自己的问题,但我对这种性能测试没有太多经验,因此,我宁愿从有更多的人那里得到更明确的答案经验或更好地掌握所涉及的理论要素。
我知道这没什么大不了的,而且大多数时候差异可以忽略不计。不过,我是一个完美主义者,我真的很想解决这个特殊的问题,这样我就可以继续我的生活了,哈哈。
此外,我认为对于我将来可能遇到的类似情况,我认为答案可能会很有启发性,其中差异可能非常显着(例如,当比较或内存分配的成本无法达到时)发生或复杂到足以导致与性能有关的实际问题)。
请回答与 Java 编程相关的问题,而不是其他语言。
我知道我已经提到过几次了,但请只关注速度差异的答案!我很清楚在编写代码时可以而且应该考虑许多其他因素,但在这里我只想要一个直截了当的论点,即 FASTER。
【问题讨论】:
-
先考虑可读性,再考虑性能!
-
@ewernli 没错,但我正在寻找的答案实际上只针对一个优先事项:性能。我知道,在实际应用中,我当然会考虑其他(可以说更重要的)优先事项。不过谢谢提醒!
-
您仍然可以尝试测量执行时间,调用测试方法一百万次,使用 nanoTime() 进行测量,并使用这两种方法的 100 万次调用来预热他的虚拟机。看看方法没有被优化掉:把每个方法调用的结果加起来,最后打印出来。
标签: java performance memory-management comparison processing-efficiency