Оптимизация компиляции: как наш компилятор PL/I приблизился к clang -O2
Наш проект — pli-llvm, компилятор PL/I с LLVM-бэкендом. Реализованные фичи включают поддержку настоящую десятичную арифметику фиксированной точности, встроенные строки переменной длины, обработку сигналов и управление памятью на уровне языка. В этой статье рассматривается, как такие конструкции представлены в компиляторе и какие оптимизации удалось применить. Для сравнения использовались парные реализации одинаковых алгоритмов на PL/I и C — таких, как тест Коллатца.Целью было приблизиться к производительности C: среднее отношение времени выполнения кода на PL/I к C в итоге составило около 1,0 на 21 бенчмарке. Читать далее