问题标签 [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.
performance - OpenJDK JMH“分数错误”到底是什么意思?
我正在使用http://openjdk.java.net/projects/code-tools/jmh/进行基准测试,结果如下:
p>“分数错误”列的确切含义是什么以及如何解释它?
performance - OpenJDK JMH 有时会在结果中打印 (*interrupt*)。这到底是什么意思?
我使用 OpenJDK JMH 0.9.3,有时我会得到一个如下所示的结果日志文件。这里的 (*interrupt*) 是什么意思?
java - jmh 没有匹配的基准。拼写错误的正则表达式?使用 -v 进行详细输出。
我正在实施示例应用程序以了解 JMH。我在运行它时遇到问题。我发现了这个错误
这是我的代码。
我发现许多与此问题相关的帖子,但我没有明确的答案。请用简单的方式解释。
java - 最小化 Java 函数调用开销
我有一段代码,在我运行的每个测试中,函数调用都会产生大量开销。代码是一个紧密的循环,对数组的每个元素(包含 4-8 百万int
)执行一个非常简单的函数。
运行代码,主要包括
执行类似的东西
在各种机器上(我的工作笔记本电脑、带有 i7 3840QM 的 W530、带有 Xeon E5-1620 一个核心的服务器 VM 和一个带有未知 CPU 核心的 Digital Ocean 节点),当调用方法与内联。所有测试均在 Java 1.8.0_11(Java HotSpot(TM) 64 位服务器 VM)上执行。
工作机器:
专用服务器,虚拟机:
做VPS:
所有可接受的性能,但我有兴趣弄清楚为什么调用有如此大的开销以及可以做些什么来优化它。目前正在试验不同的参数集。
内联所有潜在的操作会很困难,但理论上是可能的。对于接近 2 倍的性能提升,这可能是值得的,但维护将是一场噩梦。
我不确定是否有合理的方法来批量处理一组重复;大多数操作采用多个输入(调用者不知道)并产生单个输出。
我还有哪些其他选择可以最小化开销和平衡性能?
java - Why is JMH saying that returning 1 is faster than returning 0
Can someone explain why JMH saying that returning 1 is faster than returning 0 ?
Here is the benchmark code.
Here is the result:
The same behaviour for one, two and zero
jmh - JMH:分值是什么意思?
我不明白 JMH 结果中的 score 属性?我也没有在网上找到任何关于它的信息。
谁能告诉我,它是关于什么的?据我了解,高分比低分好,但它到底是什么意思,它是如何计算的?
java - JMH 使用 javaagent 进行测试
我正在尝试衡量 JVM 代理对性能的影响,以确保它不会使我们尝试运行的测试无效(并可能为从 prod 中获取一些样本提供理由)。此案例是一组 BTrace 脚本,将在自动负载测试期间运行,但该问题可能对任何代理都是通用的。
为了运行基准测试,我建立了一个小型 JMH 项目并将代理附加为:
这样做会导致每次 JMH 派生 JVM 时出现以下错误:
我的所有类都不是可序列化的,也没有serialVersionUID。JMH 基准测试在没有附加 BTrace 代理的情况下工作,代理和脚本在没有 JMH 的情况下工作。
(如何)您可以将 javaagent 附加到一组 JMH 基准测试并捕获由代理引起的性能差异吗?
java - 测试 Java 反射、方法句柄和镜像性能
我正在测试方法句柄(随 Java 7 提供)对 Java 反射和镜像(与反射一起使用的流畅 API - http://projetos.vidageek.net/mirror/mirror/ )有多少性能。所以我不知道我是否正确编写了测试代码。
我使用 JHM 工具进行此测试,并在我的要点中分享了代码和结果:https ://gist.github.com/garcia-jj/057dcab7f388e5cb42d1
我在方法中缓存了setup
所有查找以提高性能。
反射和方法句柄之间的最后时间几乎相等。
所以我的问题是:我的测试对吗?在我的应用程序中缓存方法查找存在一些问题?或者我需要在需要使用时始终查找invokeExact
?如果我不创建缓存,则性能太低。
谢谢
java - 为什么 JMH 运行不同的分叉?
我正在使用 JMH 基准测试框架 ( http://openjdk.java.net/projects/code-tools/jmh/ ) 在我的代码上运行基准测试。我的理解是,JMH 在基准测试期间多次分叉 JVM,以便丢弃由 JVM 在执行期间执行的即时 (JIT) 分析构建的任何配置文件。
我理解为什么这在某些情况下很有用,例如以下情况(从http://java-performance.info/jmh/逐字复制):
默认情况下,JHM 为每个试验(迭代集)派生一个新的 java 进程。这是为了保护测试免受先前收集的“配置文件”的影响——关于其他加载的类及其执行信息的信息。例如,如果您有 2 个实现相同接口的类并测试它们的性能,那么第一个实现(按测试顺序)可能比第二个实现(在同一个 JVM 中)更快,因为 JIT 取代了在发现第二个实现之后,使用接口方法调用直接对第一个实现进行方法调用。
但是,在您重复对相同代码进行基准测试的情况下,运行 10 个分支,每个分支 20 次迭代,而不是运行 1 个分支,每次迭代 200 次,有什么优势吗?
非常感谢,
丹尼
java - Arrays.stream().map().sum() 的不稳定性能
我偶然发现了一个在原始数组上进行非常简单的 map/reduce 操作的极其不稳定的性能配置文件的实例。这是我的 jmh 基准代码:
以下是典型输出的片段:
关键时刻发生在第 13 和 113 次迭代:首先性能下降十倍,然后恢复。相应的时间是进入测试运行的 2.5 秒和 22.5 秒。这些事件的时间对数组大小非常敏感,顺便说一句。
什么可以解释这种行为?JIT 编译器可能在第一次迭代中就完成了它的工作。没有 GC 动作可言(由 VisualVM 确认)......我对任何解释都完全不知所措。
我的 Java 版本(OS X):