/*
* Created on Jan 29, 2015
*
* */
package com.zcd.test;
import java.sql.Timestamp;
public class Test {
private int x;
private static int staticX;
public void stackAccess(int val) {
int j = 0;
for (int i = 0; i < val; i++) {
j += 1;
}
}
public void instanceAccess(int val) {
for (int i = 0; i < val; i++) {
x += 1;
}
}
public void staticAccess(int val) {
int tempX=staticX;
for (int i = 0; i < val; i++) {
tempX += 1;
}
}
public static void main(String[] args) {
System.out.println(new Timestamp(System.currentTimeMillis()));
Test test=new Test();
long t1Start=System.currentTimeMillis();
test.stackAccess(1000000000);
long t1End=System.currentTimeMillis();
System.out.println("Time1="+(t1End-t1Start));
long t2Start=System.currentTimeMillis();
test.instanceAccess(1000000000);
long t2End=System.currentTimeMillis();
System.out.println("Time2="+(t2End-t2Start));
long t3Start=System.currentTimeMillis();
test.staticAccess(1000000000);
long t3End=System.currentTimeMillis();
System.out.println("Time3="+(t3End-t3Start));
}
}
==========================================================================
调优后代码:
/*
* Created on Jan 29, 2015
*
* Copyright 2006 ATPCO Confidential and Proprietary. All Rights Reserved.
*/
package com.zcd.test;
import java.sql.Timestamp;
public class Test {
private int x;
private static int staticX;
public void stackAccess(int val) {
int j = 0;
for (int i = 0; i < val; i++) {
j += 1;
}
}
public void instanceAccess(int val) {
int tempX=x;
for (int i = 0; i < val; i++) {
tempX += 1;
}
}
public void staticAccess(int val) {
int tempX=staticX;
for (int i = 0; i < val; i++) {
tempX += 1;
}
}
public static void main(String[] args) {
System.out.println(new Timestamp(System.currentTimeMillis()));
Test test=new Test();
long t1Start=System.currentTimeMillis();
test.stackAccess(1000000000);
long t1End=System.currentTimeMillis();
System.out.println("Time1="+(t1End-t1Start));
long t2Start=System.currentTimeMillis();
test.instanceAccess(1000000000);
long t2End=System.currentTimeMillis();
System.out.println("Time2="+(t2End-t2Start));
long t3Start=System.currentTimeMillis();
test.staticAccess(1000000000);
long t3End=System.currentTimeMillis();
System.out.println("Time3="+(t3End-t3Start));
}
}
原文地址:http://5618698.blog.51cto.com/5608698/1652781