gpt4 book ai didi

java - Java 中使用 obj.getXY() 和 Object o = obj.getXY() 的性能

转载 作者:行者123 更新时间:2023-11-29 03:57:25 25 4
gpt4 key购买 nike

标题可能具有误导性,但我无法用一句话概括我的问题。

由于我正在为 Android 开发,所以我更担心性能。因此,我考虑使用

obj.getXY().doX(); 
obj.getXY().doY();

Object o = obj.getXY();
o.doX();
o.doY();

什么更快?引用调用所有方法还是始终使用 getter?

最佳答案

第一个变体永远不会比第二个变体快,它等于

{Object tmp = obj.getXY(); tmp.doX();}
{Object tmp = obj.getXY(); tmp.doY();}

如果 getXY() 是微不足道的(例如只返回一个常量)并且是最终的,好的编译器会优化双重调用。在所有其他情况下,额外的方法调用会使速度变慢。

因为无论如何第二个版本更具可读性,我会接受它。但是,正如其他人所指出的,除非 getXY() 很复杂,否则这种微优化不会对程序的性能产生明显影响。

刚刚测试它(doX()/doY() 是空操作,x64 上的 OpenJDK6):

Integer getXY(){return 42;}:无明显差异
Integer getXY(){return Integer.valueOf("42");}:变体 2 的速度大约是预期的两倍。

关于java - Java 中使用 obj.getXY() 和 Object o = obj.getXY() 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5522417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com