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
Performance of a Safe Compiled Language with Automatic Memory Management
Název práce v češtině: Výkonnost bezpečného kompilovaného jazyka s automatickou správou paměti
Název v anglickém jazyce: Performance of a Safe Compiled Language with Automatic Memory Management
Klíčová slova: programming language
Klíčová slova anglicky: compilers|memory management|reference counting|garbage collecting|performance|type systems
Akademický rok vypsání: 2020/2021
Typ práce: bakalářská práce
Jazyk práce: angličtina
Ústav: Katedra softwaru a výuky informatiky (32-KSVI)
Vedoucí / školitel: Adam Dingle, M.Sc.
Řešitel: skrytý - zadáno a potvrzeno stud. odd.
Datum přihlášení: 20.12.2020
Datum zadání: 20.12.2020
Datum potvrzení stud. oddělením: 18.05.2021
Datum a čas obhajoby: 02.07.2021 09:00
Datum odevzdání elektronické podoby:27.05.2021
Datum odevzdání tištěné podoby:27.05.2021
Datum proběhlé obhajoby: 02.07.2021
Oponenti: Mgr. Pavel Ježek, Ph.D.
 
 
 
Zásady pro vypracování
The purpose of this thesis work is to investigate how closely a programming language with array bounds checking and automatic memory management can approach the performance of unsafe low-level languages such as C.

The student will write a compiler for a simple language whose types will include at least integers, booleans, dynamically allocated strings, and dynamically allocated arrays of any type. The language will include standard flow control constructs such as while and for loops. It will be statically type checked. The language will include compile-time and/or run-time checks that ensure that array accesses are in bounds, and will manage memory automatically via reference counting and/or another garbage collection algorithm.

The student will use a series of benchmarks to compare the performance of his compiled language with C (as an example of an unsafe low-level language) and C# (as an example of a safer higher-level language). He will optimize his compiler so that if possible it outperforms C# on the benchmarks and approaches the performance of C as closely as possible. The particular optimizations that are necessary will be determined in the course of the thesis work, but might include (for example) compile-time elimination of bounds checks or of reference count updates, or optimizations that allocate data on the stack rather than the heap when possible.
Seznam odborné literatury
Cooper, K. & Torczon, L. (2012). Engineering a Compiler, Second Edition. Morgan Kaufmann.

Grune, D. et al (2012). Modern Compiler Design, Second Edition. Springer.

Joisha, P. (2006). Compiler optimizations for nondeferred reference-counting garbage collection. ISMM '06: Proceedings of the 5th international symposium on memory management, pp. 150-161.

Jones, R. et al (2012). The Garbage Collection Handbook: The Art of Automatic Memory Management. CRC Press.

Muchnick, S. (1997). Advanced Compiler Design and Implementation. Morgan Kaufmann.
 
Univerzita Karlova | Informační systém UK