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

没卵用的卡常实验

想起有人说,三目运算符比if-else慢,

也有人说,加了inline其实会更慢

那么,来做个实验吧。

(好智障的实验我都不好意思放上来)

准备

  • 三种方式写的“函数”。因为我太蒟了,所以用了最简单的max

    1
    #define max(a, b) ((a) > (b) ? (a) : (b))
    1
    2
    3
    4
    int max (int a, int b) {
    if (a > b) return a;
    else return b;
    }
    1
    2
    3
    int max (int a, int b) {
    return ((a) > (b) ? (a) : (b));
    }

    其中后两种分别测了有inline和没inline

  • 主程序

    采用没srand()rand()来产生数据,这样不仅是随机分布的,而且总的数据还一样

    1
    2
    3
    4
    5
    6
    7
    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
。。。。。。。。。。。。
好像也没多大区别

评论