jmh中的@Group和@GroupThreads指的是什么?
What does @Group and @GroupThreads refer to in jmh?
我一直在研究 jmh 实施 "multithreaded" 基准测试的方式。根据我的理解,注释 @Group("Identifier")
和 @GroupThreads(thread_number)
使 运行 并行启用同一组内的基准。
@Benchmark
@Group("parallel")
@GroupThreads(1)
public void benchmark_1() {
while(true) {}
}
@Benchmark
@Group("parallel")
@GroupThreads(1)
public void benchmark_2() {
while(true) {}
}
使用 CPU 监视器,我发现两个 CPU 已被完全使用。
我想知道跑步者如何解释这些注释。
您尝试过阅读 Javadocs 吗?那些没有回答问题吗?
例如@Group
说:
* <p>Multiple {@link Benchmark} methods can be bound in the execution group
* to produce the asymmetric benchmark. Each execution group contains of one
* or more threads. Each thread within a particular execution group executes
* one of {@link Group}-annotated {@link Benchmark} methods. The number of
* threads executing a particular {@link Benchmark} defaults to a single thread,
* and can be overridden by {@link GroupThreads}.</p>
*
* <p>Multiple copies of an execution group may participate in the run, and
* the number of groups depends on the number of worker threads requested.
* JMH will take the requested number of worker threads, round it up to execution
* group size, and then distribute the threads among the (multiple) groups.
* Among other things, this guarantees fully-populated execution groups.</p>
* <p>For example, running {@link Group} with two {@link Benchmark} methods,
* each having {@link GroupThreads}(4), will run 8*N threads, where N is an
* integer.</p>
因此,@Group
生成一个非对称基准,@GroupThreads
控制线程在组内的分布(-tg ...
在 CLI 中称为)。 @Threads
表示总共 运行 有多少个线程(-t ...
在 CLI 中配音)。
我一直在研究 jmh 实施 "multithreaded" 基准测试的方式。根据我的理解,注释 @Group("Identifier")
和 @GroupThreads(thread_number)
使 运行 并行启用同一组内的基准。
@Benchmark
@Group("parallel")
@GroupThreads(1)
public void benchmark_1() {
while(true) {}
}
@Benchmark
@Group("parallel")
@GroupThreads(1)
public void benchmark_2() {
while(true) {}
}
使用 CPU 监视器,我发现两个 CPU 已被完全使用。 我想知道跑步者如何解释这些注释。
您尝试过阅读 Javadocs 吗?那些没有回答问题吗?
例如@Group
说:
* <p>Multiple {@link Benchmark} methods can be bound in the execution group
* to produce the asymmetric benchmark. Each execution group contains of one
* or more threads. Each thread within a particular execution group executes
* one of {@link Group}-annotated {@link Benchmark} methods. The number of
* threads executing a particular {@link Benchmark} defaults to a single thread,
* and can be overridden by {@link GroupThreads}.</p>
*
* <p>Multiple copies of an execution group may participate in the run, and
* the number of groups depends on the number of worker threads requested.
* JMH will take the requested number of worker threads, round it up to execution
* group size, and then distribute the threads among the (multiple) groups.
* Among other things, this guarantees fully-populated execution groups.</p>
* <p>For example, running {@link Group} with two {@link Benchmark} methods,
* each having {@link GroupThreads}(4), will run 8*N threads, where N is an
* integer.</p>
因此,@Group
生成一个非对称基准,@GroupThreads
控制线程在组内的分布(-tg ...
在 CLI 中称为)。 @Threads
表示总共 运行 有多少个线程(-t ...
在 CLI 中配音)。