天天看點

cpu數組不同的通路方式的性能測試

性能測試 程式輸出:

1:temp =  array[i]*i:  2430.0 ms

2:temp = get(array,i) *i:  2430.0 ms

3:temp = get(array,i)*i:  2840.0 ms

4:int a = get(array,i);temp = a*i:  3370.0 ms

5:int a = array[i];temp =  a*i;:  2010.0 ms

6:temp =  *(array+i)*i:  2430.0 ms

7:temp =  *(array+i)*i:  2010.0 ms

其中,get是宏定義,get是函數。

顯然,1,2,6是一樣的,符合預期。(當然有時不一樣,但很接近)

3 通過函數調用來通路,時間長點,符合預期。

4 在3的基礎上,還多了次指派,時間長電,符合預期。

5和7 就不可思議了,她在1的基礎上錯了次指派,時間竟然變短了。

測試代碼

發現貌似是乘以i的原因導緻那個奇怪的問題,

把乘以i改為乘以1或者2之類的,貌似就不會的。

但是如果是乘以i+1的話還是很不符合預期。

看來要看一下彙編代碼。

繼續閱讀