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();
}
}
}