在看GO語言時(shí)看到別人寫了一段把數(shù)組先獲取長度用變量保存長度约急,在去循環(huán)遍歷的代碼零远。
以前寫的都是在for循環(huán)里面條件判斷時(shí)在獲取長度,想想這樣性能能提高多少厌蔽,就用java測試下下面是代碼
package test;
public class Test1 {
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
long sum1 = 0, sum2 = 0;
//測試1萬次
for(int a=0; a<10000; ++a){
long time1 = System.nanoTime();
for(int j=0; j<10000; ++j){
for(int i=0; i<arr.length; ++i){
int t = arr[i];
}
}
//計(jì)算處理完任務(wù)的納秒
time1 = System.nanoTime() - time1;
sum1 += time1;
long time2 = System.nanoTime();
for(int j=0; j<10000; ++j){
int len = arr.length;
for(int i=0; i<len; ++i){
int t = arr[i];
}
}
//計(jì)算處理完任務(wù)的納秒
time2 = System.nanoTime() - time2;
sum2 += time2;
}
System.out.println("sum1:"+sum1+", sum2:"+sum2+",sum1/sum2:"+(sum1*1.00)/sum2);
}
}
結(jié)果:
1.sum1:1834534466, sum2:342085548,sum1/sum2:5.3627944142206205
2.sum1:1854752830, sum2:345797811,sum1/sum2:5.363691645809753
3.sum1:1855739585, sum2:346774010,sum1/sum2:5.351437914854115
4.sum1:1855739585, sum2:346774010,sum1/sum2:5.351437914854115
5.sum1:1850499523, sum2:345726700,sum1/sum2:5.352492367526141