当前位置: 首页 > 知识库问答 >
问题:

@Group和@GroupThreads在jmh中指的是什么?

乐成济
2023-03-14

我一直在研究jmh实现“多线程”基准测试的方式。根据我的理解,@Group(“标识符”)@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已完全使用。我想知道跑步者是如何解释这些注释的。

共有1个答案

梁兴修
2023-03-14

你试过阅读Javadocs吗?那些没有回答问题吗?

例如,< code>@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控制组内线程的分布(CLI中的-tg…配音)。@线程说总共要运行多少个线程(CLI中的-t…配音)。

 类似资料:
  • 如果IIUC每个fork都会创建一个单独的虚拟机,因为每个虚拟机实例可能在JIT指令中略有不同? 我也很好奇时间属性在下面的注释中有什么作用: 蒂亚,奥莱

  • 本文向大家介绍什么是Group Convolution相关面试题,主要包含被问及什么是Group Convolution时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 若卷积神将网络的上一层有N个卷积核,则对应的通道数也为N。设群数目为M,在进行卷积操作的时候,将通道分成M份,每个group对应N/M个通道,然后每个group卷积完成后输出叠在一起,作为当前层的输出通道。

  • 我不明白JMH结果的分数属性?我也没在网上找到任何关于它的东西。 有人能告诉我,这是关于什么的吗?据我所知,高分比低分好,但这到底是什么意思,是如何计算的?

  • 在 jmh 结果中,分数以 ns/op 为单位,即每次操作所花费的时间(以纳秒为单位),操作是否是指基准测试调用?如果是这种情况,较低的分数将意味着更快的呼叫?

  • 我正在尝试测量运行基准测试时消耗的内存。我在网上发现我可以使用< code>GC profiler来测量它。我试过了,但是我不明白答案,也看不出消耗的内存量。有人能解释这个结果吗?谢了。

  • 我参考了下面的oracle jvm文档 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.pop 弹出操作弹出操作数堆栈顶部的值 总体安排 pop表格pop=87(0x57) 操作堆栈...,值→ ... 说明从操作数堆栈中弹出顶部值。 除非值是1类计算类型的值(§2.11.1),否则不得使用pop指令。