提问人:Kudor 提问时间:11/13/2023 最后编辑:Kudor 更新时间:11/13/2023 访问量:59
为什么我的低精度 java 内存访问基准测试不能正确计算纳秒?
Why my low precision java memory access benchmarking does not count nanoseconds correctly?
问:
我正在尝试编写一个代码,该代码使用 测量 100,000 个元素数组中整数的内存访问时间。以下是问题的片段:System.nanoTime()
// array declaration
int[] array = new int[100000];
for (int i = 0; i < 100000; i++)
array[i] = random.nextInt(10000);
int a = 0;
long aux_sum = 0;
long sum = 0;
for (int i = 0; i < TRIES; i++) {
long startTime = System.nanoTime();
for (int j = 0; j < 100000; j++)
a = array[j];
long endTime = System.nanoTime();
sum += endTime - startTime;
aux_sum += a;
}
// printing aux_sum such that the compiler
// does not optimize the memory accesses of a=array[j];
System.out.println(aux_sum);
System.out.println(sum/TRIES);
表达式计算的时间输出一个非常小的值,如 85、65 等,这不是我所期望的。某些编译器优化是否仍处于激活状态,还是存在其他问题?sum/TRIES
我想提一下,测量不需要非常准确,也不需要深入了解JVM内存管理。
答: 暂无答案
评论