没卵用的卡常实验#
想起有人说,三目运算符比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
快
。。。。。。。。。。。。
好像也没多大区别