相关疑难解决方法(0)

4851
推荐指数
34
解决办法
67万
查看次数

如何在Java中编写正确的微基准测试?

你如何在Java中编写(并运行)正确的微基准测试?

我在这里寻找代码示例和注释,说明要考虑的各种事项.

示例:基准测量应该测量时间/迭代或迭代/时间,为什么?

相关:秒表基准可以接受吗?

java benchmarking jvm jvm-hotspot microbenchmark

835
推荐指数
11
解决办法
11万
查看次数

如何确保不会发生jvm和编译器优化

我有这个代码正在测试Calendar.getInstance().getTimeInMillis()vs System.currentTimeMilli():

long before = getTimeInMilli();
for (int i = 0; i < TIMES_TO_ITERATE; i++)
{
  long before1 = getTimeInMilli();
  doSomeReallyHardWork();
  long after1 = getTimeInMilli();
}
long after = getTimeInMilli();
System.out.println(getClass().getSimpleName() + " total is " + (after - before));
Run Code Online (Sandbox Code Playgroud)

我想确保没有JVM或编译器优化发生,因此测试将是有效的并且实际上会显示出差异.

怎么样?

编辑:我改变了代码示例,以便更清楚.我在这里检查的是在不同的实现中调用getTimeInMilli()需要多长时间 - Calendar vs System.

java compiler-construction optimization jvm

17
推荐指数
2
解决办法
1万
查看次数