Mirki, mam mały problem: Załóżmy, że jakiś przedmiot może mieć jakość od 1 do 100, zależnie od jego jakości wyświetlać się będzie inny napis: - 1-30 - słaba jakość - 31-70 - średnia jakość - 71-100 - dobra jakość Funkcja na pobieranie napisu będzie używana bardzo często, w związku z tym pojawia się pytanie: jak ją zrobić?
Mam dwa pomysły: - Zrobić to na ifach
if (quality <= 30) {
return 1;
} else [...]
- Zrobić to na tablicy asocjacyjnej i z niej pobierać wartość
[1] = 1,
[2] = 1,
...
[31] = 2,
Która z tych opcji będzie miała większą wydajność. #programowanie
@Crypton3: robisz błąd myśląc o tym. Znaczącej różnicy tu nie będzie (jeśli jakakolwiek) a Ty tracisz czas. Tu powinieneś patrzeć na czytelność i łatwość utrzymania czyli opcja pierwsza wygrywa.
@karer: Język to LUA, mało znany język skryptowy :-) @IrvinTalvanen: Piszę gry na mobilki, a tam to warto optymalizować gdzie się tylko da. Drugi sposób też jest dość czytelny, można napisać funkcję, która wygeneruje taką tablicę przy starcie gry.
Drugi sposób też jest dość czytelny, można napisać funkcję, która wygeneruje taką tablicę przy starcie gry.
@Crypton3: dobrze a wiesz ze taka tablica musi zostac przeszukana w jezykach dynamicznych? Nie wiem jak z LUA ale generalnie 1 IF jest najszybszym co moze byc. Samo przeszukanie to wiele ifow wiec z gory bedzie wolniejsze.
Ale on nie będzie niczego przeszukiwał jeśli użyje LUT. Zrozum.
@lukasz1985m: widzisz przeszukanie nastepuje jak odnosisz sie do wartosci w pamieci i do tego pije. Jesli chodzi o kompilowanie przez JIT to prymitywy nie sa kompilowane do niczego tylko po prostu interpretowane. Prymitywy i operacje na nich mozna raczej bardzo latwo zamienic na mnemoniki prawda?
@Crypton3: To tylko 2/3 ify, serio marnujesz czas na optymalizacje tego :D Napisz to tak by było ładnie i dobrze, a potem profiluj jakimś narzędziem, do każdego języka itd powinno się coś znaleźć do profilowania. I szukaj tych metod które powodują największe "opóźnienia" w kodzie, i je optymalizuj, aż uznasz że jest już ok, i/lub bardziej się nie da lub nie opłaca.
@lukasz1985m: LUT do dwóch porównań. Genialne. Nie dość że prawdopodobnie będzie wolniejsze, to jeszcze potencjalnie zaśmieci cache jakimś gównem i zabraknie miejsca na ważniejsze rzeczy.Możesz zgłosić się po swoje 15kpln.
@lukasz1985m: Masz rację, nie ma sensu. Idź poczytać jakiś wstęp do wprowadzenia do podstaw optymalizacji i nie wypisuj takich bzdur. LUT do dwóch porównań. Mistrzostwo świata.XD
Załóżmy, że jakiś przedmiot może mieć jakość od 1 do 100, zależnie od jego jakości wyświetlać się będzie inny napis:
- 1-30 - słaba jakość
- 31-70 - średnia jakość
- 71-100 - dobra jakość
Funkcja na pobieranie napisu będzie używana bardzo często, w związku z tym pojawia się pytanie: jak ją zrobić?
Mam dwa pomysły:
- Zrobić to na ifach
- Zrobić to na tablicy asocjacyjnej i z niej pobierać wartość
Która z tych opcji będzie miała większą wydajność.
#programowanie
Komentarz usunięty przez autora
Wszystko zalezy od jezyka. Jak mozna wogole dywagowac nad optymalizacja kodu jesli nie znamy jezyka? :)
@IrvinTalvanen: Piszę gry na mobilki, a tam to warto optymalizować gdzie się tylko da. Drugi sposób też jest dość czytelny, można napisać funkcję, która wygeneruje taką tablicę przy starcie gry.
@Crypton3: dobrze a wiesz ze taka tablica musi zostac przeszukana w jezykach dynamicznych? Nie wiem jak z LUA ale generalnie 1 IF jest najszybszym co moze byc. Samo przeszukanie to wiele ifow wiec z gory bedzie wolniejsze.
Komentarz usunięty przez autora
Skoki po pamieci tez kosztuja. Warunek z IF moze zostac przekompilowany na polecenia procesorowe. Jednak przeszukiwanie jak zauwazyles juz nie.
Tak sobie pomyslalem ze moze zrobic 100 przypadkow CASE. Zlo wcielone...
Komentarz usunięty przez autora
@lukasz1985m: widzisz przeszukanie nastepuje jak odnosisz sie do wartosci w pamieci i do tego pije. Jesli chodzi o kompilowanie przez JIT to prymitywy nie sa kompilowane do niczego tylko po prostu interpretowane. Prymitywy i operacje na nich mozna raczej bardzo latwo zamienic na mnemoniki prawda?
Zreszta o czym tutaj dyskutujemy?
Napisz to tak by było ładnie i dobrze, a potem profiluj jakimś narzędziem, do każdego języka itd powinno się coś znaleźć do profilowania.
I szukaj tych metod które powodują największe "opóźnienia" w kodzie, i je optymalizuj, aż uznasz że jest już ok, i/lub bardziej się nie da lub nie opłaca.
LUA z tego co wiem ma bardzo dobrego JIT-a
Komentarz usunięty przez autora
Komentarz usunięty przez autora
Komentarz usunięty przez autora
Komentarz usunięty przez autora