c - #define 在 C 中的效率

标签 c performance

我是 C 的新手,想知道哪种编程方式更有效或更受欢迎:

选项 A:

#define flag true

void Foo()
{
   for (size_t i = 0; i < veryBigNumber; i++)
   {
      if (flag)
         doSomething1();
      doSomething2();
   }
}

选项 B:

#define flag

void Foo()
{
   for (size_t i = 0; i < veryBigNumber; i++)
   {
#if defined(flag)
         doSomething1();
#endif
      doSomething2();
   }
}

最佳答案

除非您使用的是非常陈旧/愚蠢的编译器,否则它们应该是等效的。 #if 保证在编译时进行评估,但是任何现代编译器也会在编译时评估带有整数常量 的常规if


(无论如何,您距离自己找出答案只有一步之遥。 只需在 veryBigNumber 中放入一个非常大的数字,并对两个变体分别计时。如果非常大的数字真的非常大(数百万、数十亿),即使是外部计时(time ./a.out 来自命令行)也应该给你相当可靠的计时。)

关于c - #define 在 C 中的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42202154/

相关文章:

c - 如何向结构传递/访问双指针?

c - AES mixColumns 错误

c - 如何为 IAR Embedded Workbench 项目配置 Ceedling?

使用指针复制对循环进行 C++ 编译器优化

c++最快的循环扫描3D vector

c - int main(int argc, char *argv[]) 是必须写的吗,不能用其他名字代替argc和*argv[]?

c - 什么解释了 C 编译器 w.r.t 字符串初始化的这种行为?

C++ 代码执行时间随不应该引入任何额外工作的小的源代码更改而变化

iphone - 如何加快从 Web 服务加载图像的速度?

performance - 什么是机器学习中的调优?