问题标签 [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.

0 投票
0 回答
61 浏览

java - 使用 JMH 状态时如何观察共享和非共享情况下的“巨大差异”?

我看一下JMH工具。

在示例文件JMHSample_03_States 中,他们说:

我对 java 1.8.20.0 和 Intel i5-4670K CPU @ 3.40GHz 的结果

什么是“天壤之别”?measureShared (1547894580) 和 measureUnshared (1571371998) 之间的差异小于 2%

0 投票
1 回答
4406 浏览

java - ReentrantReadWriteLock 读锁的性能?

我有一些类似于地图的存储空间。我一直在使用synchronized(this)forgetput方法。由于此存储主要用于读取,因此我考虑使用ReentrantReadWriteLock以获得更好的性能 - 仅锁定put.

我期望查找性能更好(因为存储内容没有改变)。但是,我的 JMH 测试显示相反:

第一行是使用ReentrantReadWriteLock. 第二行是原始代码,带有synchronized. 编辑:测试使用 2 个线程运行。

有没有其他人进行基准测试ReentrantReadWriteLock?结果不应该不一样吗?还是只有在多线程环境中才会出现阳性结果?

相关:这个

0 投票
1 回答
875 浏览

java - 通过 JMH 进行 sun.misc.Unsafe.compareAndSwap 测量的奇怪行为

我决定使用不同的锁定策略来测量增量,并为此使用 JMH。我使用 JMH 来检查吞吐量和平均时间,以及使用简单的自定义测试来检查正确性。有六种策略:

  • 原子计数
  • 读写锁定计数
  • 与 volatile 同步
  • 没有 volatile 的同步块
  • sun.misc.Unsafe.compareAndSwap
  • sun.misc.Unsafe.getAndAdd
  • 不同步计数

基准代码:

和板凳结果:

JDK 8u20

我期望的大部分测量,除了与循环一起UnsafeCounter_Benchmark.unsafeCount使用。它是最慢的锁定。sun.misc.Unsafe.compareAndSwapLongwhile

我认为性能低下是因为 while 循环和 JMH 引起了更高的争用,但是当我检查正确性时,Executors我得到了我期望的数字:

正确性测试代码:

我知道这是一个非常糟糕的测试,但在这种情况下,Unsafe CAS 比 Sync 变体快两倍,并且一切都按预期进行。有人可以澄清描述的行为吗?更多信息请参见 GitHub 存储库:Bench , Unsafe CAS counter

0 投票
2 回答
310 浏览

java - JMH 中迭代次数和分叉数之间的正确平衡

我正在探索 OpenJDK JMH 以对我的代码进行基准测试。根据我的理解,JMH 默认会分叉多个 JVM,以保护测试免受之前收集的“配置文件”的影响。此示例代码对此进行了很好的解释。

但是我的问题是,如果我使用以下两种方法执行,将对结果产生什么影响:

1) 有 1 个分叉,100 次迭代 2) 有 10 个分叉,每个 10 次迭代

哪种方法会给出更准确的结果?

0 投票
1 回答
2312 浏览

microbenchmark - 如何用 jmh 测量分配率?

JMH 似乎在大多数 caliper 功能上都与 caliper 一样好或更好但我不知道如何测量分配率,这对于能够在微基准测试中查看通常很有用。JMH 是衡量分配率的错误工具吗?

0 投票
1 回答
1218 浏览

java - 来自文件的 JMH 参数

我想对从文件中读取数据然后测量性能的程序(使用 JMH)进行基准测试。文件名存储为列表。问题是@Param它只接受常量表达式,所以在某种程度上这意味着我需要静态编码 中的所有文件名@Param,这看起来不太好。

还有另一种方法,可以在没有静态编码的情况下为不同的文件运行基准测试吗?

0 投票
1 回答
198 浏览

java - JMH 和 Swing 导致 CompletionFailure

刚刚尝试将 JMH 切换到 swing 的项目中,并在主 POM 中添加以下内容:

和 Alexey 的插件:

并得到 Maven 的编译器插件错误:

用过的Java:

有谁知道出了什么问题?据我所知,这个错误已经修复。

我应该在哪些方向挖掘?

0 投票
3 回答
2900 浏览

java - 随机数据与 JMH Java 微基准测试浮点打印

我正在为我编写的浮点打印代码编写 JMH 微基准测试。我还不太关心确切的性能,但要让基准代码正确。

我想循环一些随机生成的数据,所以我制作了一些静态数据数组,并使我的循环机制(增量和掩码)尽可能简单。这是正确的方法还是我应该告诉 JMH 更多关于我缺少的一些注释的情况?

此外,是否可以为测试创建显示组而不仅仅是字典顺序?我基本上有两组测试(每组随机数据一组。

完整来源在https://github.com/jnordwick/zerog-grisu

这是基准代码:

0 投票
1 回答
306 浏览

maven - 从类目录在 Maven 构建中获取 Java JMH

使用 Java 微基准测试工具,我有一个项目,可以根据我正在基准测试的一个 jar 函数来构建和安装。基准代码仍然在从 maven 创建的 JMH 目录中。这一切都很好。这是我添加的 pom.xml 行以使其正常工作:

然而,不断地导出一个新的 jar 变得令人厌烦,我犯了几个错误,导致我无法对抗我刚刚所做的更改。

我怎样才能使 JMHmvn clean install对类文件目录(即 eclipsebin目录)起作用?

0 投票
1 回答
1260 浏览

java - JMH 没有主要清单属性

我刚刚使用以下命令创建了一个 Maven 项目:

mvn clean install然后我做了一个java -jar test-1.0.jar

程序给了我这个信息

我查看了清单,没有 Main-Class 属性。

这应该生成它: