分裂比Multiply慢吗?

时间:2011-09-18 05:13:19

标签: objective-c c ios xcode performance

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

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

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

player.position = ccp(player.contentSize.width / 2, winSize.height / 2);

慢于:

player.position = ccp(player.contentSize.width * 0.5, winSize.height * 0.5);

3 个答案:

答案 0 :(得分:8)

是的,除此之外,除法通常 慢于乘法。

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

答案 1 :(得分:5)

对于相同的数据类型,大多数处理器除法比乘法慢。在您的示例中,乘法是浮点运算,如果widthheight是整数类型,结果可能会非常不同,可能取决于您的处理器和编译器。

然而,大多数编译器(当然是GCC)将通过一个恒定的2次幂来转换除法,如同在你的例子中那样,转换为更高效的右移。这通常比乘法或除法更快。

答案 2 :(得分:1)

在一定程度上乘法可以在并行中完成,如果你可以使用乘法。