gpt4 book ai didi

java - 自动装箱性能

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:22 25 4
gpt4 key购买 nike

为什么组 j=k*lm=n*o 有不同的表现,而前 3 组有相同的表现?

int a = 42;
int b = 42;
int c = 42;

Integer d = 42;
int e = 42;
int f = 42;

int g = 42;
Integer h = 42;
int i = 42;

int j = 42;
int k = 42;
Integer l = 42;

Integer m = 42;
Integer n = 42;
Integer o = 42;

for(int z = 0; z < 1000000000; z++){
// c = a*b; // 630 ms
// f = d*e; // 630 ms
// i = g*h; // 630 ms
// l = j*k; // 6000 ms
// o = m*n; // 6400 ms
}

最佳答案

你有一个没有做任何有用的循环。因此,JIT 可能需要一些时间来检测并消除循环。在前四个示例中,代码取了一个时钟周期的一小部分的平均值。这是一个强烈的暗示,表明循环已经被优化掉,你实际上是在测量检测和替换循环需要多长时间,

在后面的示例中,循环没有被优化掉,因为 JIT 没有消除循环中的某些内容。我怀疑这是 Integer 的对象分配,但 -verbosegc 显示没有创建任何对象。

在我的机器上,循环大约需要 1.9 ns 或大约 6 个时钟周期,这非常快,所以我不确定还剩下什么需要那么多时间..

关于java - 自动装箱性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14557989/

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