Я работаю над своим собственным языком программирования игрушек. На данный момент я интерпретирую исходный язык из АСТ, и мне интересно, какие преимущества компилируются в байтовый код, а затем его интерпретация может предоставить мне.
Теперь у меня есть три вещи:
- Прохождение дерева синтаксиса в сотни раз может быть медленнее, чем выполнение команд в массиве, особенно если массив поддерживает O (1) случайный доступ (то есть прыгает 10 команд вверх и вниз).
- В типизированной среде исполнения у меня есть некоторые затраты времени на запуск, потому что мой АСТ напечатан, и я постоянно обхожу его (т.е. у меня есть 10 типов узлов, и мне нужно проверить, какой тип я сейчас нахожу выполнение). Возможно, компиляция в нетипизированный байт-код может помочь улучшить это, поскольку после проверки типов и компиляции у меня были бы нетипизированные значения и код.
- Компиляция в байт-код может обеспечить лучшую переносимость.
Правильно ли мои баллы? Каковы некоторые другие мотивы для компиляции в байт-код?