分裂比Multiply慢吗?

Eck*_*dia 6 c performance xcode objective-c ios

好吧,这可能听起来像一个奇怪的问题,但它是一个有趣的问题.我正在为iOS编码,并且被告知最好是乘以而不是除以值,因为它更快.

我知道这些天的处理器可能会让这个问题变得没有问题,但我的好奇心已经变得更好了,我想知道是否有人能为我揭示这一点.

所以.....我的问题是这个 -
是:

player.position = ccp(player.contentSize.width / 2, winSize.height / 2);
Run Code Online (Sandbox Code Playgroud)

慢于:

player.position = ccp(player.contentSize.width * 0.5, winSize.height * 0.5);
Run Code Online (Sandbox Code Playgroud)

Mys*_*ial 8

是的,师通常是多少比乘法慢.

但是,当除以文字(或任何可以在编译时确定为常量的文件)时,编译器通常会优化除法.

  • 通过"像这样的文字",他意味着2的力量.然后它只是转移. (2认同)
  • 编译器还可以通过3,5和其他小数来优化除法.如果放宽浮点模式,FP除法将被乘以倒数替换. (2认同)

Cli*_*ord 5

对于相同的数据类型,大多数处理器除法比乘法慢.在您的示例的乘法是一个浮点操作时,如果widthheight是整数类型,则结果可能是非常不同的,并且可能取决于你的处理器和编译器两者上.

然而,大多数编译器(当然是GCC)将通过一个恒定的二次幂来转换一个除法,就像你的例子一样,转换到更有效的右移.这通常比乘法或除法更快.