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;
}
4

1 に答える 1

10

JVM がコード パスの最適化などを実行できるようにするためのウォームアップを行っていないため、このようなテストの結果を信頼することは困難です。次のような記事を見る価値があります。

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

System.currentTimeMillis()double ではなく long を返すため、テストも正しくありません。

于 2013-07-05T16:54:37.157 に答える