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