package com.alibaba.druid.stat; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLongFieldUpdater; import junit.framework.TestCase; 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(); } } }