问题标签 [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.
java - 使用 JMH 状态时如何观察共享和非共享情况下的“巨大差异”?
我看一下JMH工具。
在示例文件JMHSample_03_States 中,他们说:
我对 java 1.8.20.0 和 Intel i5-4670K CPU @ 3.40GHz 的结果
什么是“天壤之别”?measureShared (1547894580) 和 measureUnshared (1571371998) 之间的差异小于 2%
java - ReentrantReadWriteLock 读锁的性能?
我有一些类似于地图的存储空间。我一直在使用synchronized(this)
forget
和put
方法。由于此存储主要用于读取,因此我考虑使用ReentrantReadWriteLock
以获得更好的性能 - 仅锁定put
.
我期望查找性能更好(因为存储内容没有改变)。但是,我的 JMH 测试显示相反:
第一行是使用ReentrantReadWriteLock
. 第二行是原始代码,带有synchronized
. 编辑:测试使用 2 个线程运行。
有没有其他人进行基准测试ReentrantReadWriteLock
?结果不应该不一样吗?还是只有在多线程环境中才会出现阳性结果?
相关:这个。
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.compareAndSwapLong
while
我认为性能低下是因为 while 循环和 JMH 引起了更高的争用,但是当我检查正确性时,Executors
我得到了我期望的数字:
正确性测试代码:
我知道这是一个非常糟糕的测试,但在这种情况下,Unsafe CAS 比 Sync 变体快两倍,并且一切都按预期进行。有人可以澄清描述的行为吗?更多信息请参见 GitHub 存储库:Bench , Unsafe CAS counter
java - JMH 中迭代次数和分叉数之间的正确平衡
我正在探索 OpenJDK JMH 以对我的代码进行基准测试。根据我的理解,JMH 默认会分叉多个 JVM,以保护测试免受之前收集的“配置文件”的影响。此示例代码对此进行了很好的解释。
但是我的问题是,如果我使用以下两种方法执行,将对结果产生什么影响:
1) 有 1 个分叉,100 次迭代 2) 有 10 个分叉,每个 10 次迭代
哪种方法会给出更准确的结果?
microbenchmark - 如何用 jmh 测量分配率?
JMH 似乎在大多数 caliper 功能上都与 caliper 一样好或更好,但我不知道如何测量分配率,这对于能够在微基准测试中查看通常很有用。JMH 是衡量分配率的错误工具吗?
java - 来自文件的 JMH 参数
我想对从文件中读取数据然后测量性能的程序(使用 JMH)进行基准测试。文件名存储为列表。问题是@Param
它只接受常量表达式,所以在某种程度上这意味着我需要静态编码 中的所有文件名@Param
,这看起来不太好。
还有另一种方法,可以在没有静态编码的情况下为不同的文件运行基准测试吗?
java - JMH 和 Swing 导致 CompletionFailure
刚刚尝试将 JMH 切换到 swing 的项目中,并在主 POM 中添加以下内容:
和 Alexey 的插件:
并得到 Maven 的编译器插件错误:
用过的Java:
有谁知道出了什么问题?据我所知,这个错误已经修复。
我应该在哪些方向挖掘?
java - 随机数据与 JMH Java 微基准测试浮点打印
我正在为我编写的浮点打印代码编写 JMH 微基准测试。我还不太关心确切的性能,但要让基准代码正确。
我想循环一些随机生成的数据,所以我制作了一些静态数据数组,并使我的循环机制(增量和掩码)尽可能简单。这是正确的方法还是我应该告诉 JMH 更多关于我缺少的一些注释的情况?
此外,是否可以为测试创建显示组而不仅仅是字典顺序?我基本上有两组测试(每组随机数据一组。
完整来源在https://github.com/jnordwick/zerog-grisu
这是基准代码:
maven - 从类目录在 Maven 构建中获取 Java JMH
使用 Java 微基准测试工具,我有一个项目,可以根据我正在基准测试的一个 jar 函数来构建和安装。基准代码仍然在从 maven 创建的 JMH 目录中。这一切都很好。这是我添加的 pom.xml 行以使其正常工作:
然而,不断地导出一个新的 jar 变得令人厌烦,我犯了几个错误,导致我无法对抗我刚刚所做的更改。
我怎样才能使 JMHmvn clean install
对类文件目录(即 eclipsebin
目录)起作用?
java - JMH 没有主要清单属性
我刚刚使用以下命令创建了一个 Maven 项目:
mvn clean install
然后我做了一个java -jar test-1.0.jar
程序给了我这个信息
我查看了清单,没有 Main-Class 属性。
这应该生成它: