- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
考虑到 JMH 的默认用法,我想确定 JMH 的测量基于哪种类型的时间:CPU 时间或挂钟。
我尝试查看 JMH 官方示例 ( https://openjdk.java.net/projects/code-tools/jmh/ )、教程(在 Jenkov、Baeldung、Mykong 等),但未能准确找到此信息(我承认我可能遗漏了一些文档或一般信息在基准上)。
例如,在示例 35 (https://hg.openjdk.java.net/code-tools/jmh/file/99d7b73cf1e3/jmh-samples/src/main/java/org/openjdk/jmh/samples/JMHSample_35_Profilers.java) 中,我们有一个输出示例:
Benchmark (type) Mode Cnt Score Error Units
JMHSample_35_Profilers.Maps.test hashmap avgt 5 1553.201 ± 6.199 ns/op
JMHSample_35_Profilers.Maps.test treemap avgt 5 5177.065 ± 361.278 ns/op
因此,我想知道 Score 列是使用挂钟时间还是 CPU 时间计算的,以便我可以准确地解释基准测试结果。
最佳答案
正如我担心的那样,我错过了基本信息并且问题的表述很糟糕,因为挂钟和 CPU 时间不是唯一的选择。我听从了 Alexandre Cartapanis 的建议并查看了 JMH 的源代码。我发现类(class) BenchmarkGenerator产生基准的 System.nanoTime() 依赖于 System.nanoTime()。
进一步,根据System.nanoTime() documentation和 Kevin Bourrillion's answer对于另一个问题,我得出结论,默认情况下,JMH 根据一些任意但固定的源(就像 System.nanoTime())测量时间。
关于java - JMH 是根据 CPU 时间还是挂钟时间来计算每个时间单位的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58001793/
我有一个 C++ 二进制文件,我正在尝试测量它在最坏情况下的性能。我执行它/usr/bin/time -v 结果是 User time (seconds): 161.07 System time (
我正在开发一个高性能库,我需要在线程完成计算时停止它的时间点,然后将该时间点保存在全局变量中,以便该全局变量始终保存最近完成的一个线程的时间。 现在,我正在使用带有时间戳的 C++ std:chron
有时,在测试机器 (Windows) 上,Java 完整 GC 需要超过 20 秒。 GC 日志显示 real 时间非常高,user 也很高,但没有那么高(大约 3 秒)。在一种情况下,它是: 21.
我是一名优秀的程序员,十分优秀!