jdk 更新至今
假如代码里有多次调用 User.getAge()这个方法吧
是用 User.getAge() 直接作为调用比较好呢
还是 int age=User.getAge()
然后在各种行去用 age 比价好呢
有性能区别吗 还是 jdk 某个更新 会优化了以上写法
1
chendy 239 天前
有性能区别,但是小到可以忽略不计
爱怎么写怎么写… |
2
weiweiwitch 239 天前
多线程环境,或者 age 值实时从数据库中获取到的。那么这两种写法区别很大。要想清楚再选择。
|
3
oneisall8955 239 天前
性能影响非常小,代码风格问题,都是 O(1)
|
4
BBCCBB 239 天前
第二种好. 特别是多处调用, 变量名又长的时候,
xxxxxxxxyyyyyyyyy.getAge() xxxxxxxxyyyyyyyyy.getAge() xxxxxxxxyyyyyyyyy.getAge() xxxxxxxxyyyyyyyyy.getAge() |
5
me1onsoda 239 天前
你不妨看看编译后汇编是啥样的
|
6
unco020511 239 天前
java 开发还在纠结哪种写法好,其它语言的开发已经把业务实现下班了
|
7
xloger 239 天前
这不止是性能区别吧,这两个的语义都不一样。
1: print(User.getAge()) print(User.getAge()) 2 、 int age=User.getAge() print(age) print(age) 第一种是获取两次 age 的值并打印;第二种是获取一次 age 的值,然后用这个常量去做某些事。 用哪种写法是取决于你业务本身希望实时比较,还是得到一次值就可以了。 再提性能问题,JDK 没法优化第一种写法啊,它哪能判断出来你会不会在某个地方开个线程调用 User.setAge |
8
kristofer 239 天前
别纠结这点事了,去码头整点薯条🍟
|
9
qinxi 239 天前
从字节码角度, 重新定义变量比直接调用多了 ASTORE x 和 ALOAD x 的. 我猜虚拟机在执行的时候是可以优化到的.
即便是没有优化, 这个也可以忽略. 当然在写的时候, 如果同一代码块多次使用类似 User.getAge(), 重新定义一个变量应该会提高一定可读性, 顺便问一下啥服务, 已经到了这点性能都要扣了? |
10
LsLsLsLsLs OP @qinxi 太无聊了 扣一下细节
|
11
zhouhu 239 天前
看字节码就知道了
|
12
yuhongtai114514 239 天前 via iPhone
没必要纠结,哪种可读性强,看着顺眼就用哪种
|
13
prosgtsr 239 天前
用可读性好的那一种。纠结那点性能不如换语言
|