当前位置: 首页 > 知识库问答 >
问题:

我应该使用'-server '选项运行JMH基准测试吗

云镜
2023-03-14

我正在使用JMH,一个OpenJDK微基准测试工具。构建过程创建<代码>微基准。我用java-jar调用并传递jar名称和JMH参数的jar。

我想知道我们应该使用-server选项运行基准测试吗?为什么?

换句话说,我是否应该使用以下命令运行基准测试:

java -server -jar microbenchmarks.jar ...(jmh args)

共有2个答案

朱啸
2023-03-14

这完全取决于您想要基准测试的内容——如果您想使用服务器JVM特性来衡量系统在运行面向服务器的工作负载时的行为方式,您应该使用该选项

另请参阅 - 什么是 JVM 服务器参数?,表示 -服务器交换机也执行更好的 JITting。

邵亦
2023-03-14

好吧,这取决于您要测量的内容。在大多数情况下,机器上默认的 JVM 模式是您要复制普通 Java 应用程序将遇到的相同条件。

因此,我们通常不会将-server添加到基准测试运行中,因为在大多数机器上,人机工程学本身会隐式选择它,请参阅服务器类机器检测。

 类似资料:
  • 我有一个应用程序,我想使用对其进行基准测试。任何有关此集成的参考都将是有用的。

  • 受另一个关于堆栈溢出的问题的启发,我编写了一个微型基准来检查,什么更有效: 有条件地检查零除数或 捕获和处理 下面是我的代码: 我对JMH完全陌生,不确定代码是否正确。 我的基准是正确的吗?你看到任何错误吗? 旁白:请不要建议询问https://codereview.stackexchange.com.对于Codereview,代码必须已按预期工作。我不确定这个基准是否能按预期工作。

  • 我有几个用@Benchmark注释的大型基准类。在使用基准构建jar后,我可以使用以下命令运行所有这些类 如果我不想运行所有基准测试,如何指定要运行的基准测试?

  • 我是JMH的新手。在运行代码并使用不同的注释之后,我真的不明白它是如何工作的。我使用迭代=1、预热=1、fork=1来查看我的代码将执行一次,但事实并非如此。JMH运行我的代码超过100000次,我不知道为什么。那么,如何控制代码调用的时间?下面是我的代码:(我为测试修复了JMHSample\u 01)

  • 在我的场景中,基准测试中的方法应该在一个线程中按顺序运行并按顺序修改状态。 例如,有一个

  • javapapers.com上的这篇文章展示了如何通过键入在Maven中运行JMH基准测试。在Maven中运行JMH非常方便,因为您可以从Eclipse Run配置甚至在Maven阶段轻松运行它。 然而,这种设置有两个问题: > < li> 当您杀死Maven时,JMH将继续在后台运行,因为< code>exec:exec在一个单独的虚拟机中启动它。 通常,JMH 将启动另一个 VM 来运行基准测