没卵用的卡常实验

别说谁变了你拦得住时间么 提交于 2019-12-03 11:52:28

没卵用的卡常实验

同步:https://buringstraw.win/archives/75/
想起有人说,三目运算符比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

结论

define非常快,尽量用

三目运算符比if-else

inline比没inline
。。。。。。。。。。。。
好像也没多大区别

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!