Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

没卵用的卡常实验

想起有人说,三目运算符比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
。。。。。。。。。。。。
好像也没多大区别

评论