Cpp оптимизация JIT двоичного кода путем перекомпиляции частей на основе информации времени выполнения - PullRequest
0 голосов
/ 05 февраля 2020

Производительность очень важна для моего приложения cpp (база данных в памяти). Я пытался использовать JIT во время выполнения, то есть компилировать и оптимизировать части кода vanilla cpp во время выполнения. Время компиляции fre sh с нуля очень недетерминировано c, и общий выигрыш ограничен. Хотя это дает хорошую производительность, но я надеюсь, что смогу извлечь больше,

Моя идея состоит в том, чтобы начать с некоторого скомпилированного двоичного эквивалента release / opt во время компиляции и затем оптимизировать его во время выполнения, основываясь на если возможна оптимизация на основе данных. По сути, производительность такого двоичного файла должна быть такой же, как и у собственного двоичного файла, когда не выполняются JIT-оптимизации. Если данные слишком велики или если возможна динамическая оптимизация c, я готов потратить некоторое время на выполнение этапов оптимизации в сборке. Концептуально, здесь я буду экономить затраты на компиляцию первого прохода кода, чтобы преобразовать его в модуль работоспособного кода.

Может быть, я говорю на высоком уровне, но было бы более разумно, когда первый Этап компиляции отнимает много времени из-за преобразования текстового кода cpp в неоптимизированный машинный код (так как для этого потребовалось бы много выделений памяти), а время, затрачиваемое на соответствующие этапы оптимизации, невелико. У вас есть какие-либо указатели или ресурсы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...