我目前正在开发一个 Java 应用程序(基准测试),其目的是测量与数据库相关的某些进程。
我的应用程序应该运行如下:
我有几个想多次运行的用例(数据库中的简单插入、简单更新等)。运行之间的唯一区别是同时运行的线程数。
我需要使用 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 不会真正优化任何东西,因为代码不会改变。但是,我还是更愿意寻求一些经验丰富的建议:)
感谢您的帮助 !
注意:我阅读了很多关于基准测试的内容:
这就是为什么我会说只需要一次热身。 :)
最佳答案
需要进行一次热身。如果您涵盖了这些文章并进行了适当的热身(足够的迭代,确保您的热身代码不会被淘汰等),那么您的热身就足够了,并且在每次测试之前运行它不会有任何额外的好处。
关于java - : Same process multiple times, 的基准测试只有一次热身?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14828681/