我正在使用JMH对自定义集合实现进行性能测试。
我想模拟这样的场景,其中读取次数比写入次数多10倍。
我使用了this不对称基准测试示例,并创建了一个包含10个读取线程和1个写入线程的组。
我使用
我想模拟这样的场景,其中读取次数比写入次数多10倍。
我使用了this不对称基准测试示例,并创建了一个包含10个读取线程和1个写入线程的组。
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Group("g0")
@GroupThreads(1)
public void baselinePut0(CacheState0 state) { writing }
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
@Group("g0")
@GroupThreads(10)
public Integer baselineGet0(CacheState0 state) { reading }
我使用
-wi 10 -i 10 -f 1
参数来运行测试。在报告中,变量cnt
对于所有基准测试都是相同的。Benchmark Mode Cnt Score Error Units
Benchmark.g0 avgt 10 262,537 ? 215,406 us/op
Benchmark.g0:baselineGet0 avgt 10 2,101 ? 0,154 us/op
Benchmark.g0:baselinePut0 avgt 10 1252,231 ? 697,807 us/op
这是否意味着实验中读取的数量等于写入的数量?如果是,如何正确实现?更一般地说:在这个设置中我是否漏掉了什么?