Тема: Горе .NET
Показать сообщение отдельно
Старый 21.05.2018, 19:04   #6  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от belugin Посмотреть сообщение
JIT и AOT взаимоисключающие понятия.
Если брать Андроиды то да.
А если брать контекст дискуссии особенностей компиляторов в .NET и Java, то нет.
В разном контексте ширина толкования JIT компиляции - разная.

Цитата:
JIT compilation is a combination of the two traditional approaches to translation to machine code – ahead-of-time compilation (AOT), and interpretation – and combines some advantages and drawbacks of both.
https://en.wikipedia.org/wiki/Just-in-time_compilation

Стратегия компиляции .NET (не уверен насчет NET.Core) это AOT. Хотя по ходу этот термин может означать как минимут два подхода. Ngen.exe as Pre-JIT и собственно внутренняя реализация JIT.
Цитата:
CLR design mandates that the JIT happens before the relevant code executes,
JVM's in contrast would be free to interpret the code for a while while a separate thread creates a machine code representation.
При этом конечно то что кто-то пишет что
Цитата:
the CLR compiles all of the machine code once when it’s called at runtime
слишком упрощенно. Думаю что многое изменилось в .NET и тот же NET.Core скорее всего использует более продвинутую копмиляцию в стиле "мы еще более Java".

При этом процесс компиляции CLR называют JIT компиляцией. Но момент этой компиляции и необходимость ее перед запуском это AOT.
В отличие от интерпретации. То есть AOT снаружи JIT и есть AOT внутри JIT.
Цитата:
The Common Language Runtime (CLR), the virtual machine component of Microsoft's .NET framework, manages the execution of .NET programs. A process known as just-in-time compilation converts compiled code into machine instructions which the computer's CPU then executes.
https://en.wikipedia.org/wiki/Common_Language_Runtime

Последний раз редактировалось ax_mct; 21.05.2018 в 19:11.