About

Hi there! My name is Markus Grech and I’m a software engineer from Vienna, Austria, currently working on their Master’s degree. I’m interested in high-performance software, optimization, concurrency, CPU architectures, compilers and programming language design.

Previous Projects

ovector [C++]
A vector container that never reallocates due to requesting a fixed (user-configurable) amount of address space in advance. Utilizes lazy paging to avoid backing virtual memory with physical memory until first accessed, guaranteeing a constant-time, branch-free push_back operation. Includes optimizations to maximize performance (or rather reduce slowdown) in debug mode.

javaopc (bachelor’s thesis) [Java]
A source-to-source compiler implementing an operator overloading extension for the Java programming language.

Katana [Java]
A compiled systems programming language; supports user-defined and user-overloadable operators, limited compile-time execution via compilation to and execution of JVM bytecode inside the compiler and gives more control to the programmer than C++. Previously intended to replace C++, it has now been abandoned in favor of the Rust programming language which achieves many of the same goals and also provides memory safety.

CIJ [C++]
A compiler and virtual machine for a subset of the Java programming language. Includes a hand-optimized interpreter and a JIT compiler backend written from scratch (manually constructed x86-64 instructions by concatenating bytes). At the time it beat the OpenJDK JVM in one recursion-heavy benchmark (naive implementation of the Fibonacci function).

oc-memtest [C++]
A small tool for quickly validating memory overclocks under Windows. Does not guarantee system stability, but can help to identify memory errors that occur with reasonable likelihood. Created because existing tools would not prevent paging, were limited in testable memory capacity, or would not exercise the memory controller hard enough by utilizing multiple threads.