当前位置: 首页 > 面试题库 >

基准测试:同一过程多次,只有一次预热?

充浩波
2023-03-14
问题内容

我目前正在研究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不会真正优化任何内容,因为代码不会更改。但是,尽管如此,我还是喜欢寻求一些有趣的建议:)

谢谢您的帮助 !

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

  • 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/

这就是为什么我要说只需要一次热身的原因。:)


问题答案:

需要进行一次热身。如果您覆盖了这些文章并进行了适当的热身(足够的迭代,确保您的热身代码没有被消除等),那么您的热身就足够了,并且在每次测试之前运行它都不会获得任何额外的好处。



 类似资料:
  • 我正在制作一个自定义文本字段(绘制文本而不是使用JTextField)。我可以输入字符,但退格只清除一个字符。如果我再写一些东西,我可以再次删除一个字符。我不知道为什么。 KeyListener: 聊天对象中的keyTyped()方法: 我正在绘制当前的文本字符串。

  • 这就是我的表单的样子: 如果用户快速按下提交按钮10次,表单也将提交10次。我尝试将添加到submit按钮和下面的脚本中,但这并不能起到任何作用: 有什么解决方法吗?

  • 我试图实现每秒循环一次的ScheduledExecutorService线程,但现在它只循环一次。 我的问题是如何设置它,使它周期性地循环,而不是一次迭代? 另外,如何将连接池传递给线程,以便每次迭代都可以查询数据库?任何帮助都非常感谢。

  • 为了实现Kafka消费者对消息的一次处理,我一次提交一条消息,如下所示 上面的代码将消息的处理异步委托给下面的另一个类。 但是,这仍然不能保证只发送一次,因为如果处理失败,它可能仍会提交其他消息,并且以前的消息将永远不会被处理和提交,我在这里的选项是什么?

  • 我希望一个进程在我启动我的网络服务后运行,然后每隔30分钟左右运行一次(我现在用较小的延迟测试它,只是为了看看它是否工作),但是我的进程从来不会运行超过一次。我做错了什么? 这是我的密码: