W zależności od tego pytania Floating point division vs floating point multiplication. Podział jest wolniejszy niż mnożenie z kilku powodów.Czy kompilator zoptymalizuje podział na mnożenie?
Czy kompilator zwykle zastępuje dzielenie przez mnożenie, jeśli jest to możliwe?
Na przykład:
float a;
// During runtime a=5.4f
float b = a/10.f;
będzie to:
float a;
// During runtime a=5.4f
float b = a*0.1f;
Jeśli to jest uważane za niezawodne kompilator pytanie, używam VS2013 domyślny kompilator. Byłoby jednak miło, gdybym otrzymał ogólną odpowiedź (teoretyczną prawidłowość tej optymalizacji).
Czy kompilator nie musi wykonywać podziału, aby móc pomnożyć przez odwrotność? – NathanOliver
Nie jest to uwzględnione w części "Jeśli to możliwe", jest to przypadek, w którym nie jest to możliwe, chyba że zostanie zaakceptowana utrata dokładności. Miejmy nadzieję, że tylko przy kompilacji z flagą, która na to pozwala. – harold
@NathanOliver skompiluj jeden raz .. nie zaszkodzi –