有一个32 / 64bit的大整数,我正在修改几个位。
风格1
Integer64 = Modify(Integer64);
风格2
Modify(Integer64);
Style 3
Using the same style as the 1st, but inline function
我也相信样式2更能描述代码中的特定步骤。
从执行角度来看,哪种方式最好?
答案 0 :(得分:6)
不要从优化角度选择样式。选择一个,当未来的维护者阅读时,将最明确地指出发生了什么。然后,如果您的程序存在性能问题,您可以分析并查看该方法是否导致问题,如果是,那么请考虑您的选项。
答案 1 :(得分:3)
很有可能它没有任何区别。
使用现代编译器,将函数标记为内联很少会对是否内联生成代码产生任何明显影响。如果所讨论的函数与您所暗示的一样短,则可能会内联生成是否将其标记为内联。
一旦发生这种情况,无论是将其复制到临时状态还是退出,或者在适当位置进行修改等,都不太可能产生任何真正的影响。编译器将分析数据流,并且只根据需要复制它。无论是哪种方式,它都会被加载到寄存器中,根据需要进行修改,然后存储回原始位置,这是很不错的。
当然,所有这些都假设你打开了编译器的优化。有些编译器确实有中间优化设置,其中函数只有在明确标记为内联时才会内联生成 - 但是,坦率地说,我很少看到这些设置有多少用处(尽管你可能 - 它们有时会对代码打破时有用)完全优化已开启。)
答案 2 :(得分:1)
在我遵循的范围内,除非您通过引用传递参数,否则您的第二种方法不会修改参数。
使用内联函数可能是您最有效的方法,可能是我选择的版本。但是,可能还有其他注意事项依赖于您正在使用整数执行的操作。