Thesis (Selection of subject)Thesis (Selection of subject)(version: 348)
Assignment details
   Login via CAS
Performance of a Safe Compiled Language with Automatic Memory Management
Thesis title in Czech: Výkonnost bezpečného kompilovaného jazyka s automatickou správou paměti
Thesis title in English: Performance of a Safe Compiled Language with Automatic Memory Management
Key words: programming language
English key words: compilers|memory management|reference counting|garbage collecting|performance|type systems
Academic year of topic announcement: 2020/2021
Type of assignment: Bachelor's thesis
Thesis language: angličtina
Department: Department of Software and Computer Science Education (32-KSVI)
Supervisor: Adam Dingle, M.Sc.
Author: hidden - assigned and confirmed by the Study Dept.
Date of registration: 20.12.2020
Date of assignment: 20.12.2020
Confirmed by Study dept. on: 18.05.2021
Date and time of defence: 02.07.2021 09:00
Date of electronic submission:27.05.2021
Date of submission of printed version:27.05.2021
Date of proceeded defence: 02.07.2021
Reviewers: Mgr. Pavel Ježek, Ph.D.
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.
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.
Charles University | Information system of Charles University |