java變數讀寫效率測試
主要測試全域性變數、區域性變數、volatile變數、原子變數的讀寫效率,原始碼如下:
public class GloableVarientTest {
private long temp = 0;
public void test() {
long loop = Integer.MAX_VALUE;
long start = System.currentTimeMillis();
for (long i = 0; i < loop; i++) {
temp += i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
public void testLocal() {
long loop = Integer.MAX_VALUE;
long temp = 0;
long start = System.currentTimeMillis();
for (long i = 0; i < loop; i++) {
temp += i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
private volatile long volatileTemp = 0;
public void testVolatile() {
long loop = Integer.MAX_VALUE;
long start = System.currentTimeMillis();
for (long i = 0; i < loop; i++) {
volatileTemp += i;
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
public void testAtomic() {
AtomicLong atomicTemp = new AtomicLong(0);
long loop = Integer.MAX_VALUE;
long start = System.currentTimeMillis();
for (long i = 0; i < loop; i++) {
atomicTemp.addAndGet(i);
}
long end = System.currentTimeMillis();
System.out.println(end - start);
}
public static void main(String[] args) {
GloableVarientTest gv = new GloableVarientTest();
gv.test();
gv.testLocal();
gv.testVolatile();
gv.testAtomic();
}
}
讀寫效率測試結果:區域性變數 > 全域性變數 >>> volatile變數 ≈ 原子變數