Wpis z mikrobloga

#programowanie #gamedev #java

Początkujący programista tutaj. Napisałem taką linijkę kodu
ballDirX = (ballPosX - playerX - 40)/60;
pierwsza zmienna jest typu double, druga i trzecia to integer, nie wiem dlaczego przy wykonywaniu rzutuje wynik do inta,
ballDirX = (((double)ballPosX - (double)playerX - 40)/60;
nie pomaga, dopiero zmiana 2. i 3. zmiennej na double, ale to trochę rozwiązanie na okrętkę.

Pomożecie?
  • 29
Po prostu szkoda czasu programisty na mikrooptymalizację rzędu kilku ns.


@63274682374: Wszystko zależy, ile razy to jest powtarzane. Przed chwilą sobie zrobiłem test, co prawda w C, bo nie mam tu Javy pod ręką, ale dzielenie i mnożenie i tak robi CPU. Mnożenie wyszło mi ~7 razy szybsze.

Ziarnko do ziarnka, a potem wszyscy zdumieni, dlaczego trzeba kupować coraz szybsze komputery i dlaczego kiedyś na słabych komputerach jednak wszystko chodziło sprawnie.
Jeżeli znasz lepszy sposób na przerobienie tej jednej linijki (nie mając wglądu ani wpływu w resztę kodu), to napisz.


@glonstar: kolega wyżej napisał. Do tego wyekstrahowanie stałych, i będzie całkiem spoko.
@fegwegw: Aha, czyli:

ballDirX = (ballPosX - playerX - 40)/60.0;
to jest ten lepszy kod, a:

ballDirX = (ballPosX - playerX - 40) * (1.0/60.0);
to "koło dobrego kodu i praktyk to nawet nie stało".

Czysta złośliwość z Twojej strony, nic więcej.
@glonstar: w przypadku tak prostego kodu nie ma miejsca interpretacje. Albo coś jest napisane dobrze, albo źle. Twój kod jest napisany źle. Ale nie widzę sensu ewangelizowania, bo to nie przynosi efektu. Na szczęście w 'prawdziwym' życiu można komuś po prostu kazać pisać dobrze.
@63274682374: Wszystko zależy, ile razy to jest powtarzane. Przed chwilą sobie zrobiłem test, co prawda w C, bo nie mam tu Javy pod ręką, ale dzielenie i mnożenie i tak robi CPU. Mnożenie wyszło mi ~7 razy szybsze.

Ziarnko do ziarnka, a potem wszyscy zdumieni, dlaczego trzeba kupować coraz szybsze komputery i dlaczego kiedyś na słabych komputerach jednak wszystko chodziło sprawnie.


@glonstar: W javie twój kod jest dwa razy szybszy
@63274682374: Wyobraź sobie, że masz w firmie wspólnika, który jest solidny, ale ma jedną wadę. Nie gasi światła, gdy akurat wychodzi do domu ostatni. Zwracasz mu uwagę, a on:
1. robi Ci wyliczenie i przekonuje Cię, że firma traci grosze na tym jego niezgaszonym świetle, tłumaczy, że w sumie to nie opłaca się go gasić
2. gaszenie światła to jakby nie patrzeć dodatkowa robota, lepiej w tym czasie zrobić coś pożyteczniejszego