gpt4 book ai didi

java - 两个小型结构的性能差异

转载 作者:行者123 更新时间:2023-12-02 00:17:37 24 4
gpt4 key购买 nike

我想知道以下两者之间有性能差异吗?

if(i>=0){
//some code here
}

//and

if(i>-1){
//some code here
}

下面两个呢?

if(i>=0){
//some code here
}

//and

if(i>0 || i==0){
//some code here
}

Is >= 将在内部转换为 > || ==

附注性能差异很小,可能可以忽略不计,但我想知道是否有任何性能差异?

最佳答案

在现代 JVM 上,我认为这种想法毫无意义。 JVM 不只是编译代码然后停止。它在运行时了解您的代码并相应地修改其行为。现在我不是编译器专家,但据我了解,JVM 可以非常智能,它基本上可以优化您的整个 if如果它看到 i 的值,则在运行时退出语句总是评估真或假。

每当您想要以这样的微观方式“优化”您的代码时,请停下来提醒自己,您不如 JVM 聪明,因为它会作弊。它可以实际查看代码运行时的行为并相应地更改其行为。

查看 Steve Yegge 演讲中的精彩文字记录,其中暗示了虚拟机的令人印象深刻。这已经是几年前的事了!

http://steve-yegge.blogspot.com/2008/05/dynamic-languages-strike-back.html

添加了更好的示例

这些是 Josh Bloch 演讲中的幻灯片,他谈论了微观基准测试现在是如何不可能的。您无法查看源代码行并了解 JVM 在运行时将执行的操作。我最喜欢的幻灯片是短路运算符如何喜欢 &&过去总是更快,但在现代硬件上,情况不再总是如此。完全违反直觉,这意味着您应该停止尝试走这条路。

http://wiki.jvmlangsummit.com/images/1/1d/PerformanceAnxiety2010.pdf

关于java - 两个小型结构的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11623917/

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