docm, зачем приватом писать?
Спасибо за ответ!
Вы написали, что машинный код, скомпилированный jit компилятором находится в оперативной памяти и не кеширутеся. Не могли бы вы обьяснить тогда, что имел ввиду автор Мэтью Мак-Дональд, написав:
"Разумеется, JIT-компиляция не была бы такой полезной, если бы ее нужно было
выполнять при каждом запросе пользователем какой-нибудь страницы с Web-сайта.
К счастью, приложения ASP.NET не требуют, чтобы компиляция выполнялась при каж-
дом запросе Web-страницы. Вместо этого код IL в них создается один раз и генерирует-
ся заново только в случае изменения исходного кода, а файлы собственного машинного
кода кэшируются в системном каталоге, путь к которому выглядит примерно так:
c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files"
Вот он это и имел ввиду: что компиляция из языка программирования в IL происходит только один раз - после обновления исходного кода при запросе обновлённой страницы. Как я выше и сказал.
Что тут подразумевается под "машинным кодом" - вопрос скорее всего к переводчику. JIT (just in time) как раз и предполагает, что компиляция выполняется "на лету", что даёт ускорение работы по сравнению с интерпретацией байт-кода, а хранится (долговременно, например в кэше) байт-код - как независимый от платформы формат инструкций, но не машинный код. В противном случае JIT теряет смысл - достаточно обычной компиляции.
Однако в .NET есть инструменты, позволяющие выполнить компиляцию байт-кода в машинный код целевой платформы.
Так что либо JIT-компиляция байт-кода без кэширования машинного кода, либо компиляция с кэшированием машинного кода, но без JIT. Единственный способ увязать JIT и кэш именно тот, о котором я сказал в самом начале: нужно различать два этапа компиляции. Либо же в тексте книги допущена ошибка или неточность перевода.