问题标签 [jmh]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
list - Java 8 流与迭代器性能
我正在比较使用和不使用流的两种过滤列表的方法。事实证明,对于 10,000 个项目的列表,不使用流的方法更快。我有兴趣了解为什么会这样。谁能解释一下结果?
使用 JMH 进行微基准测试:
java -jar 目标/benchmarks.jar -wi 5 -i 5 -f 1
基准
模式 Cnt 分数错误单位
PracticeQuestionsCh8Benchmark.benchmarkCountLongWordsUsingStreams thrpt 5 10.219 ± 0.408 ops/ms
PracticeQuestionsCh8Benchmark.benchmarkCountLongWordsWithoutUsingStreams thrpt 5 910.785 ± 21.215 ops/ms
编辑:(因为有人删除了作为答案发布的更新)
jmh - JMH:约束参数空间
假设我有一个带有两个参数的 JMH 测试:
是否有一种惯用的方法来添加对参数的约束,例如仅用于基准param1 < param2
?
从@SetUp 中抛出异常有效,但会给输出增加噪音。
java - JMH 给出繁忙的吞吐量值
我正在使用 JMH 运行一些基准测试,并且每次迭代都会得到繁忙的吞吐量值,有时会有 +/- 50% 的差异。(i7 4770K、Windows 7 x64、Java 1.8u31、JMH 0.9 - 无法升级)。由于装箱和拆箱整数以及大量使用同步块,基准测试会产生大量垃圾。将迭代运行时间从 1 秒增加到 5 秒会产生较小的方差。
我的问题是:
- 我怎样才能发现这种差异的来源?
- 为什么有时在预热期间我会获得显着更高的吞吐量值?
java - JMH Benchmarking - 比较替代实现的运行时间的简洁方法
我有同一个自定义类的两个实现:
并想比较它们每个函数的运行时间(它们都具有相同的名称)。目前,我的基准测试如下所示:
我为大约 25 个不同的函数重复了这种并行结构(由于两种实现,每个函数编写了两次)。有没有办法让我只编写 25 个 @Benchmark 函数并让 jmh 为这两个实现运行每个函数?
java - 如何用 Java 衡量数据库的性能?
我正在寻找一种衡量 Java 中特定数据库性能并将它们相互比较的好方法。这些数据库是:(NoSQL)MongoDB、CouchDB 和 Cassandra 以及(RDBMS)MySQL、Postgresql。
我打算做一些 CRUD 测试和一些更复杂的连接/关系测试。我想过使用 JMH(Java Microbenchmarking Harness),但我不知道这是否是个好主意,因为它正在测量 ops/s(每秒操作数)。有人对用 Java 衡量这些数据库的性能有什么好的建议吗?还是使用 JMH 实际上是一个不错的选择?
benchmarking - JMH [Java Micro-Benchmarking Harness] 中的绘图
我一直在阅读有关JMH的信息。但我找不到使用它生成图的方法。JMH 是否支持绘图?或者是否有为此目的的第三方库?
java - 在应用服务器中运行微基准测试 [JMH]
我阅读了有关JMH的信息并尝试了提供的示例。
我想要做的是测量以下场景的统计数据,
[1] 客户端订单 -> [2] 服务器 -> [3] 开始处理订单 -> [4] 成功处理订单并准备发送 -> [5] 客户端收到响应
我可以成功地完成 [1] 到 [5] 的场景。在那里,我使用 benchmark.jar 从 @Benchmark 注释方法调用我的客户
现在我坚持测量从 [2] 到 [4] 的统计数据,它代表服务器端处理。我应该通过注释服务器端方法来做到这一点吗?如果是这样,我如何以获取基准统计信息的方式调用这些方法?
文档说The recommended way to run a JMH benchmark is to use Maven to setup a standalone project that depends on the jar files of your application.
这是否意味着我正在尝试的场景无法使用 JMH?
更新:有没有办法通过 rmi 调用来调用 @Benchmark 注释的方法?
java - 在 JMH 中对具有不同值的循环进行微基准测试
众所周知,在 JMH 基准测试中使用循环不是一个好主意,因为它会被 JIT 编译器优化,因此应该避免。int
有没有一种方法可以在不使用循环的情况下为我的 JMH 基准测试方法提供不同的输入值(输入列表)。
java - 是否可以使用 JMH 作为 Maven 验证检查?
我有一段性能关键的代码,我想将其作为 maven 构建步骤进行保护,即 JMH 将运行并检查性能是否随着本地更改而降低。
如何使用 JMH 检查这种退化?
我找到了一些相关链接:
- CI 中的性能测试
- 具有性能指标的 C++ CI
- 章节:CI 中的性能
- 带有 JUnit 和 ContiPerf 的 CI(使用
@Required()
注释)
我之前已经实现了自动化性能测试(尽管不是使用 Java,也不是在 CI 环境中)。需要注意的一个关键点是,您永远不要将其作为绝对值运行,因为运行基准测试的机器可能会有所不同。BogoMips 或依赖于测试的参考类型可用作相对比较。然后将基准测量为该参考时间的某个倍数,具有上限和下限。
虽然您通常会担心基准测试速度变慢(降级),但检查上限也很重要,因为它可能表示意外的加速(更好的硬件支持),这应该表明每个系统/架构的限制需要检查。
java - 提前编译是否需要在 jmh 中预热?
我正在阅读一些关于 java microbenchmark 工具的文档,我得到了这个肯定:
每个在线优化都需要预热,基础知识:预热 JIT 编译并不是唯一的在线优化。
这个预热阶段对于提前编译的 vm 是否仍然有用?