Témata prací (Výběr práce)Témata prací (Výběr práce)(verze: 368)
Detail práce
   Přihlásit přes CAS
Optimizing large applications
Název práce v češtině: Optimalizace rozsáhlých aplikací
Název v anglickém jazyce: Optimizing large applications
Klíčová slova: překladač, optimalizace kódu, operační systémy
Klíčová slova anglicky: compiler, code optimization, operating system
Akademický rok vypsání: 2012/2013
Typ práce: diplomová práce
Jazyk práce: angličtina
Ústav: Informatický ústav Univerzity Karlovy (32-IUUK)
Vedoucí / školitel: doc. Mgr. Jan Hubička, Ph.D.
Řešitel: skrytý - zadáno a potvrzeno stud. odd.
Datum přihlášení: 08.11.2012
Datum zadání: 08.11.2012
Datum potvrzení stud. oddělením: 14.12.2012
Datum a čas obhajoby: 09.09.2013 00:00
Datum odevzdání elektronické podoby:01.08.2013
Datum odevzdání tištěné podoby:02.08.2013
Datum proběhlé obhajoby: 09.09.2013
Oponenti: Mgr. Martin Mareš, Ph.D.
 
 
 
Zásady pro vypracování
Oba hlavní open source překladače, GCC a LLVM, dnes dosahují stavu, kdy jsou
schopny link-time optimalizovat velké aplikace (například Firefox, Chrome,
OpenOffice, KDE nebo Gnome). Optimalizace v překladačích jsou ale tradičně
stavěné a testované na menších programech, jako například SPEC2006. Tyto
benchmarky netestují parametry podstatné pro skutečné aplikace, jako je
například velikost kódu, doba potřebná pro studený start aplikace a podobně.
Vývojové nástroje proto nevyhovují potřebám velkých sofwarových balíků.
Vývojáři těchto balíků tak často sahají k různým ad-hoc řešením,
mezi které patří například utilita ElfHack redukující velikost relativních
relokací v programu, startování vlastních aplikaci pomocí předzavedené utility
a dlopen, prelinking a různé nástroje pro přerovnání výsledného programu podle
pořadí provádění funkcí.

Student se seznámí s pokročilými technikami optimalizace kódu v překladačích.
Prozkoumá výkonnostní problémy velkých aplikací a určí metodu testování jejich
výkonu. V práci student zanalyzuje a popíše nejpodstatnější body řešitelné na
úrovni překladače, linkeru, jádra operačního systému a vývojových nástrojů. Na
základě této studie implementuje některé z navržených optimalizací.
Seznam odborné literatury

Steven Muchnick: Advanced Compiler Design and Implementation, Morgan Kaufmann, 1997

Bob Morgan: Building an Optimizing Compiler, Digital Press, 1998

GNU Compiler Collection (GCC) Internals (dokumentace k projektu)

Urlich Drepper: How to Write Shared Libraries

Jakub Jelínek: Prelink, diplomová práce, 2003

Mike Hommey: Improving libxul startup I/O by hacking the ELF format, 2010

Jan Hubička, Taras Glek: Optimizing real-world applications with GCC Link Time Optimization, 2010

Xinliang David Li, Raksit Ashok, Robert Hundt: Lightweight Feedback-Directed Cross-Module Optimization, CGO 2010

Taras Glek: Improving binary layout for progressive decompression 2011

S. Tallam, C. Coutant, I.L. Taylor, X.D. Li, & C. Demetriou: Safe ICF: Pointer Safe and Unwinding aware Identical Code Folding in the Gold Linker, 2010
 
Univerzita Karlova | Informační systém UK