dzielenie vs mnożenie - fakty i mity

0

Hey, mam takie pytanie: czy dzielenie rzeczywiście jest wolniejszym działaniem od mnożenia?
Pytam, gdyż często czytałem, że dzielenie jest znacznie wolniejsze od mnożenia, natomiast po przeprowadzeniu dość prymitywnych testów wychodzi mi, że szybkość wykonywania działań jest praktycznie taka sama.
Czy możecie napisać mi jak to w końcu jest z tym dzieleniem?

2

W zależności od rozmiaru operandów, dzielenie może być od kilku do kilkudziesięciu razy wolniejsze. Te twoje prymitywne testy były zapewne na tyle prymitywne, że:

  • albo kompilator wyciął całkiem te twoje obliczenia,
  • albo operacje dzielenia/ mnożenia miały procentowo mały udział w całkowitym czasie wykonania,

Po szczegóły zapraszam np tutaj: http://agner.org/optimize/

0

Tak, dzielenie jest dużo wolniejsze od mnożenia. Wg. informacji w manualu pierwszym na stronie http://agner.org/optimize/ zajmuje ono 27-80 cykli procesora dla liczb 32 bitowych całkowitych. Jeśli dzielisz przez potęgę dwójki jest to znacznie szybsze, gdyż wtedy kompilator może wykonać przesunięcie bitowe(oczywiście kompilator może wykonać taką optymalizację tylko gdy ta potęa dwójki jest stała). Jeśli chodzi o liczby zmiennoprzecinkowe, to zajmuje to 20-45 cykli.

Dla porównania, mnożenie liczb całkowitych zajmuje 3-10 cykli procesora.

1 użytkowników online, w tym zalogowanych: 0, gości: 1