沒卵用的卡常實驗#
想起有人說,三目運算符比if-else
慢,
也有人說,加了inline
其實會更慢
那麼,來做個實驗吧。
(好智障的實驗我都不好意思放上來)
準備#
-
三種方式寫的「函數」。因為我太蒟了,所以用了最簡單的
max
#define max(a, b) ((a) > (b) ? (a) : (b))
int max (int a, int b) { if (a > b) return a; else return b; }
int max (int a, int b) { return ((a) > (b) ? (a) : (b)); }
其中後兩種分別測了有
inline
和沒inline
-
主程式
采用沒
srand()
的rand()
來產生資料,這樣不僅是隨機分布的,而且總的資料還一樣int main (void) { for (int i = 1; i <= 100000000; ++i) { int x = rand(), y = rand(); int z = max(x, y); } return 0; }
-
計算器
utools 真好用
過程#
本著科學的實驗原則,每個測五遍,取平均值
結果#
從上到下依次是:define
,if沒inline
,if有inline
,三目沒inline
,三目有inline
結論#
define
非常快,盡量用
三目運算符比if-else
快
inline
比沒inline
快
。。。。。。。。。。。。
好像也沒多大區別