content: package com.alibaba.druid.stat;
  
  import junit.framework.TestCase;
  
  import java.util.concurrent.atomic.AtomicLong;
  import java.util.concurrent.atomic.AtomicLongFieldUpdater;
  
  public class PerfTest extends TestCase {
      public void test_0() throws Exception {
          for (int i = 0; i < 3; ++i) {
              long startMillis = System.currentTimeMillis();
              a();
              long millis = System.currentTimeMillis() - startMillis;
              System.out.println("a : " + millis);
          }
      }
  
      private void a() {
          A a = new A();
          for (int i = 0; i < 1000 * 1000 * 1000; ++i) {
              a.incrementAndGet();
          }
      }
  
      private void b() {
          B b = new B();
          for (int i = 0; i < 1000 * 1000 * 1000; ++i) {
              b.incrementAndGet();
          }
      }
  
      public static class A {
          private volatile long value;
  
          static final AtomicLongFieldUpdater<A> updater = AtomicLongFieldUpdater.newUpdater(A.class, "value");
  
          public long incrementAndGet() {
              return updater.incrementAndGet(this);
          }
  
          public long getValue() {
              return value;
          }
      }
  
      public static class B {
          private final AtomicLong value = new AtomicLong();
  
          public long incrementAndGet() {
              return value.incrementAndGet();
          }
      }
  }
  