в машинный код? если не ошибаюсь такая опция была и в .net/jvm (конечно тогда не будет дальнейших оптимизаций в рантайме между сессиями, и только локально на машине сработает если не распространять)
Если сначала собирать статистику, то качество (производительность) сгенерированного кода будет выше. Про PGO слышали?
уже подредактировал) ну да, про оптимизацию аргумент
потому что архитектура такая, джитованный код не очень «управляем» при прочих равных
ну я понимаю что если сгенерировать машинный код на целевой машине (непосредственно на той где будет исполняться программа), да. но дальше уже идет оптимизация по данным. для меня не совсем очевиден выигрыш от этого
кроме оптимизаций есть еще безопасность, переносимость, управляемость
как вы собрались верефицировать бинарник который вам по проводу прилетел?
а зачем переносить? программа компилируется из il в машинный код один раз на целевой машине
когда «один раз»?
в первый момент использования например. или до первого использования чтобы сэкономить на прогреве
как это на времени старта отразится?
ага, в .net тоже так же
как загуглить?
и там проблемы со временем старта к примеру асп дот нета
в книге рихтера встречал
вроде оно The Native Image Generator (Ngen.exe) is a tool that improves the performance of managed applications. Ngen.exe creates native images, which are files containing compiled processor-specific machine code, and installs them into the native image cache on the local computer. The runtime can use native images from the cache instead using the just-in-time (JIT) compiler to compile the original assembly.
а что не так со стартом?
потому что фремворк на лету методы генерирует
а зачем на старте то компилировать если можно заранее?
как вы заранее их скомпилируете если их приложение во время работы создает
я не берусь говорить авторитетно, поскольу в дотнете профан, но есть такой момент - кажется Егор Богатов говорил тут - что в обычной даже сборке дотнетовской, большинство методов уже за АОТ-чены
Кроме самой сборки профиля если сразу компилировать с2, то машина будет стоять и не выполнять полезную работу, пока не прокомпилируется
Это лучше у разработчиков JIT спросить. 😁 Как минимум — количество вызовов. Inline cache с информацией о типах, в принципе, тоже можно считать статистикой...
хотспот собирает все, что можно теоретически собрать, если в операции используется тип он собирается
Кстати, а как вообще работает эта штука с JIT который оптимизирует самые "горячие" участки кода?
Обычно JIT оптимизирует не отдельные участки кода, а горячие функции целиком. Так что как бы "просто компилирует" отдельные функции и вызывает скомпилированные версии. Это опуская очень большое количество "интересных" деталей. 😁
Обсуждают сегодня