C语法或二进制优化语法?

时间:2010-05-13 06:20:00

标签: c syntax binary

让我们举一个假设两条线做同样事情的简单例子:

if(value> = 128 || value< 0) ...

if(value& ~127) ...

说'如果在数千次迭代的循环中成本很高,是否更好地保持传统的C语法或更好地找到二进制优化的语法?如果可能的话?

4 个答案:

答案 0 :(得分:3)

我会使用传统语法的第一个语句,因为它更具可读性。 用第二个陈述可以打破眼睛。

关心将在您之后使用该代码的程序员。

答案 1 :(得分:3)

在100个中的99个案例中,做一个更具可读性并更好地表达你意图的案例。

答案 2 :(得分:1)

理论上,编译器会为您进行这种优化。在实践中,他们可能不会。这个特殊的例子有点微妙,因为这两个不相等,除非你对value做出一些假设,以及你的目标平台上的带符号算术是否是2的补码。

使用您认为更具可读性的产品。如果您有证据证明此特定测试的性能至关重要,请使用能够为您提供最佳性能的产品。就个人而言,我可能会写:

if ((unsigned int)value >= 96U)

因为这对我来说更直观,而且我与之合作的大多数编译器都更有可能得到妥善处理。

答案 3 :(得分:1)

这取决于检查的方式/地点。如果在程序启动期间进行一次检查以检查命令行参数,那么性能问题就完全没有用了,你应该使用更自然的东西。

另一方面,如果检查是在某个内循环内部,每秒发生数百万次,那么它可能很重要。但不要以为一个人会更好;你应该创建两个版本并计算它们,看看两者之间是否存在任何可衡量的差异。