性能測試 程式輸出:
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的話還是很不符合預期。
看來要看一下彙編代碼。