BuringStraw

BuringStraw

沒卵用的卡常實驗

沒卵用的卡常實驗#

想起有人說,三目運算符比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 真好用

過程#

本著科學的實驗原則,每個測五遍,取平均值

結果#

從上到下依次是:defineif沒inlineif有inline三目沒inline三目有inline

UTOOLS1572873241403.png

結論#

define非常快,盡量用

三目運算符比if-else

inline比沒inline
。。。。。。。。。。。。
好像也沒多大區別

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。