java – 基准测试:同一个进程多次,只有一次热身?

我目前正在开发一个
Java应用程序(Benchmark),其目的是确定某些与数据库相关的进程.

我的应用程序应运行如下:

我有几个Usecases(简单插入,简单更新等,在数据库中),我想多次运行.运行之间的唯一区别是同时运行的线程数.

我需要使用1,2,4,8,16等线程对这些用例进行测试,以便在我的测试中包含并发(使用ExecutorService).

我的问题 :

我的应用程序在每次运行之前是否需要运行预热?或者只有一个就足够了.换句话说,我的应用程序是否必须执行以下操作:

--warmup
--process(1) (1 thread)
--warmup
--process(2) (2 threads)
etc.

要么

--warmup
--process(1)
--process(2)
etc.

基本上,无论线程数如何,“process()”方法都完全相同.我倾向于认为一个显然是足够的,因为JVM不会真正优化任何东西,因为代码不会改变.但是,我仍然喜欢寻求一些exerimented建议:)

谢谢您的帮助 !

注意:我读了很多关于基准测试的内容:

> http://www.ibm.com/developerworks/library/j-jtp12214/
> http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html
> http://www.ibm.com/developerworks/java/library/j-benchmark2/

这就是为什么我会说只需要一次预热. 🙂

最佳答案 需要一次热身.如果您介绍了这些文章并进行了适当的预热(足够的迭代次数,确保您的预热代码没有被淘汰等),那么您的预热就足够了,并且在每次测试之前,您将无法获得运行它的任何额外好处.

点赞