gpt4 book ai didi

Java增加还是减少?绩效评估

转载 作者:行者123 更新时间:2023-12-01 10:34:17 25 4
gpt4 key购买 nike

JAVA中i++;之间是否存在性能差异?和i--;

我无法为此评估字节码,并且我认为简单的基准测试由于依赖于特定算法而并不可靠。

最佳答案

im not able to evaluate bytecode

除了我链接的副本之外,它显示了在询问性能相关问题时需要考虑的一些一般事项:

给出以下示例代码(System.err.println 本质上是必要的,这样编译器就不会优化掉未使用的变量):

public class IncDec {
public static void main(String[] args) {
int i = 5;

i++;
System.err.println(i);
i--;
System.err.println(i);
}
}

反汇编代码:

> javap -c IncDec
Compiled from "IncDec.java"
public class IncDec {
public IncDec();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."<init>":()V
4: return

public static void main(java.lang.String[]);
Code:
0: iconst_5
1: istore_1 // int i = 5

2: iinc 1, 1 // i++

5: getstatic #16 // Field java/lang/System.err:Ljava/io/PrintStream;
8: iload_1
9: invokevirtual #22 // Method java/io/PrintStream.println:(I)V

12: iinc 1, -1 // i--

15: getstatic #16 // Field java/lang/System.err:Ljava/io/PrintStream;
18: iload_1
19: invokevirtual #22 // Method java/io/PrintStream.println:(I)V

22: return
}

因此,不,在这种特殊情况下,在字节码级别上没有性能差异 - 两个语句都编译为相同的字节码指令。

JIT 编译器可以自由地进行任何额外的优化。

关于Java增加还是减少?绩效评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34875566/

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