IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Diskusia – Prekladača pod pokrievkou - optimalizácia

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
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í :)

Odpovedať
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

Odpovedať
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.

Odpovedať
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
Odpovedá 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. ;-)

 
Odpovedať
23.11.2013 12:45
Avatar
Kit
Tvůrce
Avatar
Odpovedá 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é.

Odpovedať
23.11.2013 13:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovedá 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. ;)

Odpovedať
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.

 
Odpovedať
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.

 
Odpovedať
19.12.2014 11:11
Avatar
coells
Tvůrce
Avatar
Odpovedá 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.

 
Odpovedať
19.12.2014 11:46
Avatar
1Pupik1989
Člen
Avatar
Odpovedá 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á.

 
Odpovedať
19.12.2014 13:48
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!