[wyróżniony]
[#2]
Re: [C] Optymalizacja za pomocą fixed point zamiast floating point
@mateusz_s,
post #1
Z FPU można korzystać na wiele sposobów. Najprościej jest ustawić odpowiednią flagę kompilatora (o ile kompilator umie generować kod dla FPU oczywiście) wtedy rozkazy FPU będą bezpośrednio wplecione w kod. Tak skompilowany kod będzie najszybszy, ale będzie wymagał FPU. Warto więc dodać na początku sprawdzanie obecności FPU i wyjście z komunikatem, jeżeli go brak. Inaczej program na maszynie bez FPU się wywali.
Wywoływanie bibliotek MathIEEE jest sposobem uniwersalnym (będzie działać na wszystkim), ale dość nieefektywnym dla maszyn z FPU, bo narzut wywołania funkcji wobec np. jednego rozkazu FPU (proste działania arytmetyczne typu IEEESPAdd()) jest spory. Zazwyczaj kompilator też ma odpowiednią do tego flagę i sam generuje odpowiednie wywołania. Chyba, że nasz ulubiony kompilator nie ma, wtedy można też radzić sobie z jawnym wywołaniem. Co prawda czytelności kodu to specjalnie nie służy, ale też działa.
Biblioteki MathIEEE są dobre, jeżeli mamy do wykonania stosunkowo niewiele obliczeń i nie jest to krytyczne czasowo, a nie chce się nam generować dwóch oddzielnych binarek (dla maszyn z FPU i bez).
Co do szybkości i optymalizowania wypowiedzieć się nie mogę, bo nigdy nie testowałem tego na 040/060.