编程语言
首页 > 编程语言> > java – jmh:同时运行基准测试

java – jmh:同时运行基准测试

作者:互联网

我正在运行jmh benchmark,但每个试验中的调用都是连续发生的.如何让调用同时运行?

这是我的代码的摘要:

@State(Scope.Benchmark)
public class FooBenchmark {
    @Param({"123456"})
    public int barId;

    @Setup
    public void setup() {
    }

    @Benchmark
    public void run(Blackhole hole) {
        System.out.println("A"); // for proof that it's serial (see below)
        ...
        System.out.println("B"); // for proof that it's serial (see below)
    }   
}

这将打印A然后打印B.将永远不会给出两个连续的A或B.

解决方法:

如果要显式定义测试期间要使用的线程总数,则需要使用@Threads(numberOfThreads)注释您的测试方法(使用@Benchmark注释的方法),如下所示:

@Threads(10)
@Benchmark
public void run(Blackhole hole) {

在此示例中,10个线程将同时执行测试方法.

作为提醒,以下是描述此注释的文档的一部分:

@Threads: Number of threads to use for the test. The default is
Runtime.getRuntime().availableProcessors().

标签:jmh,java,concurrency
来源: https://codeday.me/bug/20190824/1703061.html