¿La split es más lenta que multiplicar?

Ok, esto puede sonar como una pregunta extraña pero es interesante. Estoy codificando para iOS y me han dicho que siempre es mejor multiplicar en lugar de dividir valores, ya que es más rápido.

Sé que los procesadores estos días probablemente no sean un problema, pero mi curiosidad me ha ayudado mucho y me pregunto si alguien podría arrojar algo de luz sobre esto para mí.

Así que mi pregunta es esta –
es:

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

más lento que:

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

En la mayoría de los procesadores, la split es más lenta que la multiplicación para los mismos types de datos . En su ejemplo, su multiplicación es una operación de punto flotante, si el width y la height son types integers, el resultado puede ser muy diferente y puede depender tanto de su procesador como de su comstackdor.

Sin embargo, la mayoría de los comstackdores (ciertamente GCC) traducirán una split por una potencia constante de dos como en su ejemplo, a un cambio a la derecha donde sería más eficiente. En general, eso sería más rápido que multiplicar o dividir.

Sí, la split suele ser mucho más lenta que la multiplicación.

Sin embargo, al dividir por literales (o cualquier cosa que pueda determinarse como constante en el time de compilation), el comstackdor usualmente optimizará la split.

La multiplicación hasta-cierto grado se puede hacer en paralelo, si puede usar la multiplicación de uso.