Теоретически, да, JIT может быть сделан для C ++. Для агрессивной оптимизации кода могут использоваться некоторые преимущества базовой архитектуры. Это также может привести к тому, что приложение будет загружаться во время выполнения дольше.
Конечно, не было бы сборки мусора и поэтому
накладные расходы из-за этого, но фактор оптимизации будет там. имеет
кто-нибудь работал над этим. Есть ли какие-нибудь документы, инструменты на это? Как хорошо
будет ли такой подход?
Большое заблуждение здесь. Внедрение GC по всем направлениям для каждого определенного пользователем типа является большой накладной нагрузкой Это одна из причин, по которой Android, iOS и Windows Mobile обратились к C / C ++ для высокопроизводительных приложений, несмотря на то, что изначально пытались использовать только управляемые виртуальные машины.
Конечно, дополнительный уровень косвенности означает, что GC может свободно делать такие вещи, как компактная память, но оптимизированная программа C / C ++ уже с самого начала будет работать с уплотненной памятью. Это также означало бы, что память изначально более фрагментирована, что является фактором, снижающим производительность, для высокопроизводительных приложений, в которых хорошо работает C ++ (например, для работы с большими непрерывными буферами, например, такими как обработка видео, трассировка лучей или аудио). обработка).
Кроме того, превращение каждого экземпляра UDT в эталонный означает, что все находится в куче, что фактически превращает операции, которые изначально представляют собой несколько тактов в сотни.
Тем не менее, чтобы понять суть вашего вопроса, конечно, код C ++ может быть построен с использованием JIT, но вы можете обнаружить, что на самом деле нет таких убедительных причин делать это, учитывая такие вещи, как статичность, в которой люди обычно работают с кодом C ++.