哪种编程风格更好?从优化的角度来看

时间:2011-03-07 21:30:09

标签: c++

有一个32 / 64bit的大整数,我正在修改几个位。

风格1

Integer64 = Modify(Integer64);

风格2

Modify(Integer64);

Style 3

Using the same style as the 1st, but inline function
  • 1st)返回64位修改版 值
  • 2nd)备份缓冲区是 创建和原始值 复制了。然后进行计算 存储到原始输入值中 地方
  • 3rd)修改是内联的 功能

我也相信样式2更能描述代码中的特定步骤。

从执行角度来看,哪种方式最好?

3 个答案:

答案 0 :(得分:6)

不要从优化角度选择样式。选择一个,当未来的维护者阅读时,将最明确地指出发生了什么。然后,如果您的程序存在性能问题,您可以分析并查看该方法是否导致问题,如果是,那么请考虑您的选项。

答案 1 :(得分:3)

很有可能它没有任何区别。

使用现代编译器,将函数标记为内联很少会对是否内联生成代码产生任何明显影响。如果所讨论的函数与您所暗示的一样短,则可能会内联生成是否将其标记为内联。

一旦发生这种情况,无论是将其复制到临时状态还是退出,或者在适当位置进行修改等,都不太可能产生任何真正的影响。编译器将分析数据流,并且只根据需要复制它。无论是哪种方式,它都会被加载到寄存器中,根据需要进行修改,然后存储回原始位置,这是很不错的。

当然,所有这些都假设你打开了编译器的优化。有些编译器确实有中间优化设置,其中函数只有在明确标记为内联时才会内联生成 - 但是,坦率地说,我很少看到这些设置有多少用处(尽管你可能 - 它们有时会对代码打破时有用)完全优化已开启。)

答案 2 :(得分:1)

在我遵循的范围内,除非您通过引用传递参数,否则您的第二种方法不会修改参数。

使用内联函数可能是您最有效的方法,可能是我选择的版本。但是,可能还有其他注意事项依赖于您正在使用整数执行的操作。