为什么字节比整数慢?类实例化

3

我有这段简单的代码。如果在MyClass中将int改为byte,则它会以1.5倍的速度变慢,有什么想法,为什么会这样?

public class Test {

public static void main(String[] args) {
    double start = System.currentTimeMillis();
    MyClass[] arr = new MyClass[10_000_000];

    for (int i = 0; i < arr.length; i++) {
        arr[i] = new MyClass();
    }

    double end = System.currentTimeMillis();
    System.out.println(end-start);
    }
}
class MyClass {
    final public int pole = 50;
    int eshePole;
}

如果我在MyClass中将int更改为byte,那么由于某种原因它会变慢1.5倍。你是在谈论“pole”和“eshePole”变量吗? - Vishal K
1
https://dev59.com/TXE95IYBdhLWcg3wRL0t - surfealokesea
它运行得慢了1.5倍? - Ingo
@Ingo 慢1.5倍,我猜测。 - John Dvorak
它的运行速度慢了1.5倍。 - MaxNevermind
运行在分析器下,以精确地查看时间花费的位置。 - Thorbjørn Ravn Andersen
1个回答

10

像这样的测试结果很难信任,因为您没有进行任何预热以允许JVM执行诸如优化代码路径之类的操作。值得查看类似于以下文章:

https://wikis.oracle.com/display/HotSpotInternals/MicroBenchmarks

您的测试也不正确,因为System.currentTimeMillis()返回一个long而不是double。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接