我有这个简单的代码。如果我在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;
}
答案 0 :(得分:10)
很难相信这样的测试结果,因为你没有做过任何热身以允许JVM做优化代码路径之类的事情。值得查看以下文章:
https://wikis.oracle.com/display/HotSpotInternals/MicroBenchmarks
您的测试也不正确,因为System.currentTimeMillis()
返回的是长号,而不是双倍。