gpt4 book ai didi

java - 为方法调用的返回结果声明变量与内联方法调用的内存/性能差异

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

以下两个代码段之间是否存在任何性能或内存差异?我尝试使用 visualvm 对它们进行概要分析(这甚至是完成这项工作的正确工具吗?)但没有注意到差异,可能是因为代码实际上没有做任何事情。

编译器是否将两个片段优化为相同的字节码?出于风格原因,一个比另一个更可取吗?

boolean valid = loadConfig();
if (valid) {
// OK
} else {
// Problem
}

对比

if (loadConfig()) {
// OK
} else {
// Problem
}

最佳答案

这里真正的答案是:javap 会告诉您相应的字节码是什么样子,这并不重要!

如果那段代码像“一次”一样执行;那么这两个选项之间的差异将在纳秒范围内(如果有的话)。

如果那段代码被执行了“无数次”(通常足以“重要”);然后 JIT 将启动。JIT 会将字节码优化为机器码;非常依赖于 JIT 在运行时收集的大量信息。

长话短说:您将时间花在一个非常微妙的细节上,以至于在实际现实中无关紧要。

在现实中重要的是:源代码的质量。从这个意义上说:选择“阅读”最好的选项;给定你的上下文。

鉴于评论:我认为最终,这(几乎)是一个纯粹的风格问题。使用第一种方法可能更容易跟踪信息(假设变量不是 boolean 值,但更复杂)。从这个意义上说:没有“本质上”更好的版本。当然:选项2少了一行;少用一个变量;通常:当一个选项与另一个选项一样可读时;并且两者中的一个更短……那么我更喜欢更短的版本。

关于java - 为方法调用的返回结果声明变量与内联方法调用的内存/性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255848/

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