Wpis z mikrobloga

@farmaceut

To może ja wytłumaczę. Po pierwsze przy optymalizowaniu wydajności kodu trzeba zawsze zadać sobie pytanie: czy warto? W większości przypadków odpowiedź na to pytanie brzmi "nie", ponieważ w dzisiejszych czasach moc obliczeniowa komputerów jest niewyobrażalnie tania, a z kolei praca programistów jest bardzo droga. Kod nie jest po to, żeby go napisać i zapomnieć -- po jego napisaniu przez kilka kolejnych lat, co jakiś czas jakiś programista (zapewne sowicie opłacany) będzie go czytać, refaktorować, debugować. Zatem w 99% przypadków czytelność jest preferowana ponad wydajność. Zwiększając czytelność oszczędzasz czas następnym programistom patrzącym na ten kod, a to jest zasób dużo cenniejszy niż te nanosekundy czasu działania programu, które zyskasz stosując jakieś dziwne nieczytelne triki optymalizacyjne.

A jeśli chodzi o same triki konkretnie:
1. Nie daje nic (kompilator Javy sam jest w stanie zrobić tę
  • Odpowiedz
jaka jest roznica w iterowaniu do 0, a do N?


@ni0bi: pewnie chodzi o to, że na x86 jest instrukcja loop, która decrementuje ecx i skacze jeśli nie jest zerem i domniemywa się, że jvm pod spodem tak będie robić (czyli masz petlę w jednej instrukcji)
  • Odpowiedz
Imo "zmniejszenie liczby wykonań pętli" jest tutaj najszczerszym złotem ( ͡° ͜ʖ ͡°)


@Zelber: przykład jest może rzeczywiście źle dobrany, ale unrolling pętli jest dobrze znanym sposobem optymalizacji. Wieć nie do końca jest się z czego śmiać tutaj.
https://en.wikipedia.org/wiki/Loop_unrolling <-- tutaj wikipedia nawet bardzo podobny przykład podaje
  • Odpowiedz
@InformacjaNieprawdziwaCCCLVIII: @farmaceut
2.) Czytelność kodu to jedno.
Do tego:
-Ten "sposób" przestanie działać np w przypadku gdy chcemy mieć np i<2137 (liczba pierwsza).
-Co w wypadku gdy nasze i nie jest stałe i nie znamy jego wartości?.
-Technicznie rzecz biorąc idąc tą logiką jaki jest sens ograniczenie tego do 5
  • Odpowiedz
@InformacjaNieprawdziwaCCCLVIII:

Co do pierwszego akapitu to jak najbardziej rozumiem... kiedyś jak komputery operowały na znacznie mniejszej pamięci to każda linijka się liczyła... teraz chill

Co do punktów to dopiero teraz zauważyłem ten bezsensowny j+= 10 powtórzone trzy razy Przy zmniejszonym i <15 do i<5. O co chodziło autorowi? XD

Poza tym widzę niekonsekwentność u autora slajdu. Mówi, żeby iterowac DO zera... a wszędzie indziej daje OD Zera xD
  • Odpowiedz