只是好奇,哪个代码更有效:
if (myClass.getSomeValue() != myValue) myClass.setSomeValue(myValue);
Run Code Online (Sandbox Code Playgroud)
或者干脆
myClass.setSomeValue(myValue);
Run Code Online (Sandbox Code Playgroud)
,在哪里getSomeValue()和setSomeValue(...)是简单的getter-setter对?很明显,如果.equals()使用的话,第二个会更快,所以我们只使用!=.
微优化没有意义,尤其是Java等基于字节码的语言.感谢Hotspot,针对两个代码段执行的实际机器级指令可能会根据实际环境,使用模式等而有很大差异.
因此,即使你真的需要这样做,我也不认为你的问题有一个普遍的答案,而不知道myValue实际上与原版有什么不同.
第一个显然会更快.
在知道瓶颈所在之前不要进行优化.请记住,过早优化是万恶之源.通常的瓶颈是数据库,网络,创建大量对象.简单地检查一个值不是瓶颈.
请注意: !=并且equals()不一样.前者检查身份(参考指向同一个对象),后者检查是否相等(如果两个不同的对象具有相同的值).
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |