¿Por qué la división es más cara que la multiplicación?


Realmente no estoy tratando de optimizar nada, pero recuerdo escuchar esto de los programadores todo el tiempo, que lo tomé como una verdad. Después de todo se supone que saben estas cosas.

Pero me pregunto por qué la división es en realidad más lenta que la multiplicación? ¿No es la división solo una resta glorificada, y la multiplicación es una adición glorificada? Así que matemáticamente no veo por qué ir de una manera u otra tiene costos computacionalmente muy diferentes.

¿Puede alguien aclarar la razón / causa de esto así que sé, en lugar de lo que escuché de otros programadores que pregunté antes que es: "porque".

Author: Joan Venge, 2013-04-01

1 answers

La CPU ALU (Unidad Aritmética-Lógica) ejecuta algoritmos, aunque están implementados en hardware. Los algoritmos clásicos de multiplicaciones incluyen Wallace tree y Dadda tree . Más información está disponible aquí. Técnicas más sofisticadas están disponibles en los procesadores más nuevos. En general, los procesadores se esfuerzan por paralelizar las operaciones de pares de bits para minimizar los ciclos de reloj requeridos. Los algoritmos de multiplicación se pueden paralelizar de manera bastante efectiva (aunque se requieren más transistores).

Los algoritmos de división no se pueden paralelizar tan eficientemente. Los algoritmos de división más eficientes son bastante complejos ( El error Pentium FDIV demuestra el nivel de complejidad). Generalmente, requieren más ciclos de reloj por bit. Si buscas más detalles técnicos, aquí hay una buena explicación de Intel. Intel en realidad patentó su algoritmo de división.

 41
Author: Lior Kogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-28 19:11:26