-
Data: 2010-12-21 19:52:24
Temat: Re: Jaki j?zyk - ceny?
Od: A.L. <l...@a...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Tue, 21 Dec 2010 20:04:53 +0100, Wojciech Jaczewski
<w...@o...pl> wrote:
>Mariusz Kruk wrote:
>
>> Czy ja gdzieś pisałem, że nigdy nie należy optymalizować? Owszem, jeśli
>> ktoś wszystko sortuje bąbelkowo, bo inaczej nie umie i nie jest w stanie
>> zrozumieć, że można inaczej, zapewnie w życiu nie napisze kawałka
>> dobrego kodu. Tego oczywiście nie neguję. Ale już zastanawianie się nad
>> kolejnością porównań żeby zyskać kilka procent szybkości przy sortowaniu
>> kosztem zaciemnienia kodu będzie miało sens tylko w pewnych konkretnych
>> przypadkach.
>
>Akurat sortowanie nie jest chyba dobrym przykładem, bo mało kto rezygnuje ze
>skorzystania z funkcji bibliotecznej. Zwykle te niewydajne rozwiązania
>powstają dla mniej książkowych problemów.
>
>>>To że często nie opłaca się walczyć o 20% wydajności to się zgadzam.
>>
>> Ano właśnie.
>
>I tu jest właśnie ciekawostka... Rzeczywistość pokazuje nam oprócz programów
>szybkich, oraz niezłych ale nie optymalizowanych intensywnie (czyli
>wolniejszych o np. kilkadziesiąt procent), także wiele programów
>beznadziejnie powolnych. Natomiast przy okazji prawie każdej dyskusji na
>temat praktyki robienia powolnych programów ich obrońcy mówią o 1-5-10-15% o
>które nie warto walczyć.
>Jakby podyskutować na temat wydajności takiej np. Javy z jakimś jej
>miłośnikiem, też zazwyczaj zacznie wywody o tanim sprzęcie i o tym że nie
>opłaca się walczyć o każdy procent wydajności - gdy tymczasem każdy nie-
>zaślepiony miłością do tego języka widzi, że w rzeczywistych programach
>różnice wydajności są kilkukrotne, a nie rzędu pojedynczych procentów.
Roznice miedzy czym a czym?... I dlaczego?
kazdy program powinien byc optymalizowany, bo nei ma powodow zby byl
wolny gdy moze byc szybki. Ale przypomneic nelazy stare prawa
Kernighana:
1. Make it working, make it nice later. Czyli ze nie nalezy zbyt wiele
uwagi posiecac optymalizacji na samym poczatku pracy - z wyjatkiem
pzremyslanych decyzji na temat wlasciwych algorytmow i struktur
danych. Liniowe ppzreszukiwania w tablicy zawierajacej milion liczb
jest OK jezeli sie to robi tylko raz, nei jest OK jezeli sie robi
tysiace razy
2. 20% kodu pochlaniania 80% czasu. Trzeba tylko te 20% znalezc,
zoptymalizowac i znalezc nastepne 20% (prawo 80/20). I tak w kolko.
Knuth nawet twierdzi (twierdzil) ze to jest 5/95
Innymi slowy, optymalizacja musi sie odbywac wedle pewnej strategii.
Moje obserwacja mlodych "pistoletow" programistycznych oraz
przesluchiwanie ic hna interview pokazuja ze nei maja oni pojecia o
zlozonosci obliczeniowej algorytmow, sprawnosci i optymalizacji
programow. Nei spotkalem jeszcze faceta z dyplomem M. Sc. ktory by
wiedzial jak "w srodku" dziala Javova HashTable, po co jest "load
factor" i po co jest mozliwosc definiowania poczatkowego rozmiaru
hashtable, i jak owe czynniki wplywaja na sprawnosc. W ogole nikt nei
widzial (jak do dzis) jaka jest zlozonosc operracji wyszukiwania w
hashtable i od czego ona zalezy. Jak rowniez jaki jest koszt
zdefiniowania HashTable z domyslnymi wartosciami. Zeby wymienic tylko
jeden problem.
Takich rzeczy sie na studiach nei uczy.
Robi sie wiec bez zastanowienia rozne idiotyzmy dzieki ktorym programy
sa szybkie jak mucha w miodzie. No, ale zawsze mozna wziac szybszy
procesor.
Bylo tu pare slow o "code review". Code review jest miedzy innymi po
to zeby zobaczyc idiotyzmy ktore "pistolety" robia w sensie
sprawnosci.
A.L.
Następne wpisy z tego wątku
- 21.12.10 20:12 A.L.
- 21.12.10 20:26 Boguś
- 21.12.10 21:17 A.L.
- 23.12.10 11:30 Sebastian Kaliszewski
- 23.12.10 13:59 A.L.
- 23.12.10 15:12 Maciej Sobczak
- 23.12.10 15:24 Mariusz Kruk
- 23.12.10 20:12 A.L.
- 29.12.10 16:42 Sebastian Kaliszewski
- 29.12.10 17:42 A.L.
Najnowsze wątki z tej grupy
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-11-29 Dławik CM
- 2024-11-29 [OT] Lewe oprogramowanie
- 2024-11-29 Błonie => Sales Specialist <=
- 2024-11-29 Warszawa => IT Expert (Network Systems area) <=
- 2024-11-29 Warszawa => Ekspert IT (obszar systemów sieciowych) <=
- 2024-11-29 Warszawa => Head of International Freight Forwarding Department <=
- 2024-11-29 Białystok => Inżynier Serwisu Sprzętu Medycznego <=
- 2024-11-29 Pómpy ciepła darmo rozdajoo
- 2024-11-29 Białystok => Application Security Engineer <=
- 2024-11-29 Białystok => Programista Full Stack (.Net Core) <=
- 2024-11-29 Gdańsk => Software .Net Developer <=
- 2024-11-29 Wrocław => Key Account Manager <=
- 2024-11-29 Gdańsk => Specjalista ds. Sprzedaży <=
- 2024-11-29 Chrzanów => Specjalista ds. public relations <=
- 2024-11-27 Re: UseGalileo -- PRODUKTY I APLIKACJE UŻYWAJĄ JUŻ DZIŚ SYSTEMU GALILEO