Делить медленнее чем Multiply? - PullRequest
6 голосов
/ 18 сентября 2011

Хорошо, это может звучать странно, но это интересный вопрос.Я пишу для iOS, и мне сказали, что всегда лучше умножать, а не делить значения, поскольку это быстрее.

Я знаю, что в наши дни процессоры, вероятно, делают это не проблемой, но мое любопытство стало лучшеобо мне, и мне интересно, если кто-нибудь сможет пролить некоторый свет на это для меня.* медленнее, чем:

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

Ответы [ 3 ]

8 голосов
/ 18 сентября 2011

Да, деление обычно намного медленнее, чем умножение.

Однако при делении на литералы (или все, что можно определить как константу при компиляциивремя), компилятор обычно оптимизирует разделение.

5 голосов
/ 18 сентября 2011

На большинстве процессоров деление медленнее, чем умножение для тех же типов данных .В вашем примере ваше умножение является операцией с плавающей запятой, если width и height являются целочисленными типами, результат может сильно отличаться и может зависеть как от вашего процессора, так и от вашего компилятора.

Однако большинство компиляторов (конечно GCC) будет переводить деление на постоянную степень двойки, как в вашем примере, на сдвиг вправо, где это будет более эффективно.Как правило, это будет быстрее, чем умножение или деление.

1 голос
/ 18 сентября 2011

Умножение до определенной степени может выполняться параллельно, если вы можете использовать любое из них, используйте умножение.

...