Optymalizacja - jak się tego nauczyć

0

Witam, chodzi mi o pojęcie 'optymalizacja', w różnych kategoriach, np. programowanie Java, SQL, Python

Jak się zabrać za poprawę optymalizacji, jak ją testować?
Są jakieś darmowe narzędzia itp?

Może jakieś ciekawe strony, książki, tutoriale o tej tematyce?

4

Najpierw napisz program, bez zwracania za dużej uwagi na optymalizacje (nie mówię tutaj o używaniu sortowania bąbelkowego, ale bardziej np. o rozwijaniu pętli itp.). Później znajdź jakiś profiler, który pozwoli Ci zidentyfikować który fragment kodu najbardziej odpowiada za czas działania programu i optymalizuj tylko te fragmenty. Optymalizując działający program tracisz o wiele mniej czasu niż przy optymalizacji w trakcie pisania, nie mówiąc o zwiększeniu czasu pisania przez zmniejszenie czytelności kodu. Knuth analizując programy w FORTRANie odkrył, że 4% kodu wykonywane jest przez 50% czasu, inne powiedzenie mówi, że 20% kodu jest wykonywane przez 80% czasu.

0

co do SQLa to odpalasz coś (większość SZBD ma wbudowane), co pokaże Ci plan zapytania i tam masz już ładnie wyszczególnione co zabiera najwięcej czasu

0

Są darmowe narzędzia (hasła "profiler", "execution plan") i książki na ten temat.
Ale raczej każda technologia rządzi się swoimi zasadami więc szukaj konkretnie pod dany język programowania, konkretny system baz danych lub CPU.

0

Z teoretycznego punktu widzenia, optymalizacja to zbijanie złożoności asymptotycznej. I taka optymalizacja może być stosowana przy każdym języku kompletnym w sensie maszyny Turinga i jakichś tam klasach "niekompletnych" języków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1