ок. привожу выдержки из книжки Джеффри Рихтера "CLR via C#". 2 издание. стр. 14 "вот особенности, которые позволяют управляемому коду опередить неуправляемый: - JIT-компилятор может обнаруживать факт выполнения приложения на Core i series и сгенерировать машинный код, полностью использующий все преимущества особых комманд этого процессора. Неуправляемые приложения обычно компилируют в рассчете на среднестатистический процессор, избегая специфических комманд, которые заметно повышают производительность приложения на новейших процессорах. - JIT компилятор может обнаруживать, что определенное выражение на конкретной машине всегда равно false. Например посмотрим на метод с таким кодом: if (numberOfCPUs >1) {...} Здесь numberOfCPUs - число процессоров. Код указывает JIT-компилятору, что для машины с одним процессором не нужно генерировать никаких машинных комманд. В этом случае машинный код оптимизирован для конкретной машины, он короче и выполняется быстрее. - CLR может проанализировать выполнение кода и перекомпилировать IL-код в команды процессора во время выполнения приложения. Перекомпилированный код может реорганизовываться с учетом обнаруженных некорректных прогнозов ветвления. Это лишь малая часть аргументов в пользу того, что управляемый код зачастую исполняется лучше неуправляемого. "
|