沒卵用的卡常實驗#
想起有人說,三目運算符比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快
。。。。。。。。。。。。
好像也沒多大區別