КС:2015:Проект:jit
Содержание
Что это за проект
Введение
JIT компиляция (Just In Time, ещё называют динамической) - это компиляция виртуальной машиной программы на интерпретируем байткоде в машинный код в процессе её выполнения. Позволяет увеличить скорость выполнения интерпретируемой программы. Применяется, в частности, в виртуальных машинах pypy и java hotspot.
Что требуется
Вам предлагается реализовать быструю библиотеку регулярных выражений, которая умеет компилировать регулярные выражения непосредственно в инструкции x86-64.
Чему вы научитесь
1. Узнаете, как устроена JIT компиляция.
2. Научитесь профилировать код и искать узкие места в производительности.
3. Научитесь писать интерпретаторы с JIT.
Начальные требования
1. Технический английский язык.
2. Знание C++.
3. Любознательность.
Критерии оценивания
Требования на зачет в конце 1-го модуля
Нужно будет реализовать библиотеку регулярных выражений, которая умеет по регулярному выражению в диалекте POSIX extended построить автомат, скомпилировать этот автомат в байткод и затем его выполнить. Также программа должна уметь дампить байткод и считывать его из дампа.
Итоговая оценка
- 3 балла. Реализованы требования на зачёт в конце первого модуля.
- 7 баллов. Байткод компилируется в машинный код, машинный код работает правильно.
- +1 балл. Реализована поддержка юникода и capturing groups (захватывающих скобок).
- +N баллов. N = 8 * max(0, (Time(re2) - Time(jit)) / Time(re2)) на предложенных тестах.