c++ - 寻找有关何时使用 if 语句展开循环的意见

标签 c++ optimization

我想知道什么时候(如果有的话)我应该将 if 语句从实质性循环中拉出以帮助优化速度?

for(i=0;i<File.NumBits;i++)
  if(File.Format.Equals(FileFormats.A))
    ProcessFormatA(File[i]);
  else
    ProcessFormatB(File[i]);

进入

if(File.Format.Equals(FileFormats.A))
  for(i=0;i<File.NumBits;i++)
    ProcessFormatA(File[i]);
else
  for(i=0;i<File.NumBits;i++)
    ProcessFormatB(File[i]);

我不确定编译器是否会为我进行这种类型的优化,或者这是否被认为是良好的编码实践,因为我认为如果循环更复杂,它会使代码更难以阅读/维护。

感谢您的任何意见/建议。

最佳答案

当您完成代码时,分析器会告诉您 for 循环是一个瓶颈。很快。

关于c++ - 寻找有关何时使用 if 语句展开循环的意见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931158/

相关文章:

c++ - CMake 错误 : linker command failed with exit code 1 and cpp. o 文件

找到最佳 x y 索引的算法,使每个象限中的点数总和最小化

r - 如何忽略optim中函数执行中的错误?

c++ - 为什么 C++ 标准文件流不更紧密地遵循 RAII 约定?

c++ - C++ 映射中的 C 风格数组

c++ - 我能用这个瓶颈做什么

python - Scipy.optimize.minimize 没有给出最小值,即使它看到该值

python - 有效地计算没有尾随零的阶乘?

c++ - 为什么当通过 Objective-c 类调用时,C++ 实例会自动调用构造函数和析构函数?

c++ - 重写 if 语句,使其更简洁、更简洁