IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Překladače pod pokličkou - optimalizace

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
tastyfish
Tvůrce
Avatar
tastyfish:22.11.2013 23:09

Jenom jsem to tak proletěl, ale zdá se mi to jako dost dobrý článek od autora, který ví, o čem mluví :)

Odpovědět
22.11.2013 23:09
škoda mluvit
Avatar
Neaktivní uživatel:23.11.2013 9:37

Dobré! To že se kód tak rapidně změní jsem nečekal... :D

Odpovědět
23.11.2013 9:37
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Kit:23.11.2013 9:50

Je to dobrý článek, jen ty příklady jsou nějak přeházené. Je z toho vidět, že není problém definovat konstantu jako výraz z konstant. Že je zbytečné a často i kontraproduktivní se o některé optimalizace vůbec snažit. Velký význam však má výběr vhodného algoritmu či návrhového vzoru.

Odpovědět
23.11.2013 9:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
coells
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
coells:23.11.2013 12:45

Kód se často mění ještě víc, než by kdokoliv čekal. :-)

V rámci jedné soutěže v C++ jsem potřeboval co nejvyšší rychlost zpracování, protože vstupy i výstupy byly obrovské. Takže jsem musel dřít C++ i počítač na kost.

Během performance analýzy se děla podivná věc. Ve chvíli, kdy jsem dal jednu podmínku pryč, běžel program neuvěřitelně rychle. Vůbec to nedávalo smysl, dokud jsem nezjistil, že se v tu chvíli změnily okolnosti a kompilátor provedl kaskádově řadu optimalizací ... a odstranil mi větší část kódu, protože ji nepovažoval za potřebnou. ;-)

 
Odpovědět
23.11.2013 12:45
Avatar
Kit
Tvůrce
Avatar
Odpovídá na coells
Kit:23.11.2013 13:40

Vím, že kompilátor při optimalizaci často přemisťuje invarianty cyklu mimo cyklus, podmínku u while přemisťuje na konec cyklu a settery v jedné třídě expanduje do metod ve volajících třídách. Snažit se ručně optimalizovat tyto části kódu je zpravidla zbytečné.

Odpovědět
23.11.2013 13:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na coells
Zdeněk Pavlátka:23.11.2013 15:19

Úžasný a poučný článek. :O O optimalizacích jsem věděl jen to, že v C++ fungují všechny objektové metody jako inline. ;)

Odpovědět
23.11.2013 15:19
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:18.10.2014 11:07

Celkem užitečný článek. Věděl jsem, že překladače osekají nepoužívané proměnné, ale že jdou až do takových detailů, jsem nevěděl.

Kdyby chtěl někdo psát seriál o překladačích, byl bych rád a vděčný. Sice s tím teď blbnu, ale nejsem schopen o tom napsat článek.

 
Odpovědět
18.10.2014 11:07
Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:19.12.2014 11:11

Možná by nebylo na škodu se ještě zmínit o lexikální analýze, která se provádí jako první. Stačila by jen zmínka na řádek.

 
Odpovědět
19.12.2014 11:11
Avatar
coells
Tvůrce
Avatar
Odpovídá na 1Pupik1989
coells:19.12.2014 11:46

Formální model analýzy se takhle sice vyučuje, ale v řadě moderních jazyků je lexikální zpracování už součástí syntaktické analýzy, např. i ++ j může mít více významů a to neberu v úvahu jazyky, kde můžeš definovat své vlastní operátory.

 
Odpovědět
19.12.2014 11:46
Avatar
1Pupik1989
Člen
Avatar
Odpovídá na coells
1Pupik1989:19.12.2014 13:48

Já vím, že lexikální analýza je součástí syntaktické, ale ostatní to vědět nemusí. Proto jsem psal, že stačí jen zmínka na řádek. Já je mám třeba oddělené. Řekl bych, že to ničemu nevadí. V lexikální analýze žádné významy nejsou. Ta čte jen vstup a udělá z něj lexémy, víc jí nezajímá.

 
Odpovědět
19.12.2014 13:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.