Skocz do zawartości

dzielenie


Rekomendowane odpowiedzi

A po co Ci ta wiadomość : D ?

 

Jak chcesz wynik zmiennoprzecinkowy to używaj "/", jak całkowity to "div".

 

a div b = floor(a / b )

 

Jeśli już coś miało by być szybsze to div, ale nawet jeśli jest różnica to na tyle malutka że nie ma co tego liczyć. A na pewno nie w gmie.

Odnośnik do komentarza
Udostępnij na innych stronach

A to nie można zmierzyć ? Zrób pętlę która się wykona 100000 razy i zmierz czas.

no właśnie tak w końcu zrobiłem, w każdym razie z "/" liczyło mi się jakieś 52s a z "div" około 51, więc div jest nieznacznie szybszy (pewnie o jakąś nanosekundę:) )

 

a ta wiadomość potrzebna mi, bo staram się trochę przyspieszyć wykonywanie mojego kodu i szukam co by tu odjąć :)

Odnośnik do komentarza
Udostępnij na innych stronach

Dokładniej rzecz biorąc jedna nanosekunda to 10 do minus dziewiątej potęgi sekundy (0,000000001). Jeżeli robiłeś 100000 powtórzeń to dzieląc przez / operacja wykonywała się średnio co 0,00052 sekundy a przez div średnio co 0,00051 sekundy. Różnica to 0,00001 sekundy (różnica nawet nie wynosiła jedną mikrosekundy), tylko 10 mikrosekund, czyli 10000 razy więcej niż nanosekunda.

Odnośnik do komentarza
Udostępnij na innych stronach

div to dzielenie w liczbach całkowitych (przyjaznych dla procesora), a / to dzielenie na liczbach zmiennoprzecinkowych. w div procesor spokojne kończy, gdy dojdzie do przeciska (resztę wyzeruje), w / musi obliczać, aż zapełni całą pamięć liczby (skoro zmienne w GML to C++'owe double to dokładnie 52 pola).

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...