V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
twogoods
V2EX  ›  程序员

这段 jmh 靠谱吗?

  •  
  •   twogoods · 2017-05-12 21:17:21 +08:00 · 1610 次点击
    这是一个创建于 2705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    @OutputTimeUnit(TimeUnit.MILLISECONDS)
    @BenchmarkMode(Mode.SampleTime)
    @Warmup(iterations = 5)
    @Measurement(iterations = 10, time = 5, timeUnit = TimeUnit.SECONDS)
    @Threads(20)
    @Fork(1)
    @State(Scope.Benchmark)
    public class CASBench {
        private AtomicInteger atomicInteger = new AtomicInteger(0);
        private int a = 0;
    
        @Benchmark
        public void cas() throws Exception {
            int i;
            do {
                i = atomicInteger.get();
            } while (!atomicInteger.compareAndSet(i, i + 1));
        }
    
        @Benchmark
        public void sync() {
            synchronized (this) {
                a++;
            }
        }
    }
    

    测试结果不太看得懂,不管测试对不对,求大大分析下测试结果

    # Fork: 1 of 1
    # Warmup Iteration   1: 0.013 ±(99.9%) 0.002 ms/op
    # Warmup Iteration   2: 0.013 ±(99.9%) 0.002 ms/op
    # Warmup Iteration   3: 0.013 ±(99.9%) 0.002 ms/op
    # Warmup Iteration   4: 0.011 ±(99.9%) 0.002 ms/op
    # Warmup Iteration   5: 0.015 ±(99.9%) 0.002 ms/op
    Iteration   1: 0.012 ±(99.9%) 0.001 ms/op   这是每个操作的平均值吗?
                     sync·p0.00:   ≈ 10⁻⁶ ms/op
                     sync·p0.50:   ≈ 10⁻⁴ ms/op
                     sync·p0.90:   0.001 ms/op
                     sync·p0.95:   0.001 ms/op
                     sync·p0.99:   0.159 ms/op
                     sync·p0.999:  0.737 ms/op
                     sync·p0.9999: 20.054 ms/op 这个和后面的是什么意思啊,而且差距好大?
                     sync·p1.00:   64.160 ms/op
    .....
    
    Benchmark                     Mode       Cnt    Score    Error  Units
    CASBench.cas                sample  32574554    0.004 ±  0.001  ms/op
    CASBench.cas:cas·p0.00      sample             ≈ 10⁻⁶           ms/op
    CASBench.cas:cas·p0.50      sample             ≈ 10⁻⁴           ms/op
    CASBench.cas:cas·p0.90      sample              0.001           ms/op
    CASBench.cas:cas·p0.95      sample              0.001           ms/op
    CASBench.cas:cas·p0.99      sample              0.002           ms/op
    CASBench.cas:cas·p0.999     sample              0.004           ms/op
    CASBench.cas:cas·p0.9999    sample              0.221           ms/op
    CASBench.cas:cas·p1.00      sample            104.595           ms/op
    CASBench.sync               sample  27044931    0.012 ±  0.001  ms/op
    CASBench.sync:sync·p0.00    sample             ≈ 10⁻⁶           ms/op
    CASBench.sync:sync·p0.50    sample             ≈ 10⁻⁴           ms/op
    CASBench.sync:sync·p0.90    sample              0.001           ms/op
    CASBench.sync:sync·p0.95    sample              0.001           ms/op
    CASBench.sync:sync·p0.99    sample              0.104           ms/op
    CASBench.sync:sync·p0.999   sample              1.071           ms/op
    CASBench.sync:sync·p0.9999  sample             20.185           ms/op
    CASBench.sync:sync·p1.00    sample             69.992           ms/op
    
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5523 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 02:51 · PVG 10:51 · LAX 19:51 · JFK 22:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.