RyuJIT: следующее поколение JIT компиляторов для .NET

Мир движется к 64-разрядным вычислениям, хотя это не всегда быстрее и эффективнее, чем 32-битные. Много программам работает быстрее на 32-битной, чем на 64-битных, по целому ряду причин. Одним из примеров этого является 64-разрядный компилятор JIT в. NET. Он делает отличную работу по ускорению вашей программы, но не по максимуму. Все это скоро изменится: x64 ​​JIT компилятор нового поколения, который компилирует код в два раза быстрее, готов изменить ваши впечатления о 64-разрядном кода .NET.

Напомним о 64-разрядных

Похоже, что 32-разрядный компьютер x86 существует с незапамятных времен. Это отличная архитектура компьютера, но в ней есть одна большая проблема: 32- разрядный указатель может адресовать только 4 ГБ оперативной памяти. В 64-разрядных компьютерах, с их более широкими указателями, существует возможность обращаться практически с неограниченным объемом оперативной памяти. RAM был относительно дорогим, когда только появилась 64-разрядная версия Windows, так 64-битные машины были первоначально только в качестве серверов. В настоящее время 64-разрядные вычисления получили широкое признание и теперь компьютеры обычно “грузят” более чем 4Гб оперативной памяти. Даже некоторые смартфоны перешли на 64 бита, несмотря на то, что у них есть только 1 ГБ оперативной памяти.

Изначально 64-разрядный .NET JIT компилятор предназначен для создания очень эффективного кода в долгосрочной перспективе серверного процесса. Это отличается от .NET x86 JIT , который был оптимизирован для получения быстрого кода. Но «серверный код» сегодня включает в себя веб-приложения, у которых время запуска должно быть минимальным.

RyuJIT в помощь!

RyuЧТО?. .NET команда работает над новым, следующего поколения x64 компилятором под кодовым названием RyuJIT. Этот новый JIT в два раза быстрее, то есть у приложений, скомпилированы с RyuJIT, время запуска будет быстрее на 30% (время, потраченное в JIT-компиляторе является лишь одним компонентом времени и запуска, так что приложение не будет запускаться в два раза быстрее только потому, что JIT ускорился в два раза). Кроме того, новый JIT до сих пор производит прекрасный код, который работает эффективно на протяжении длительного запуска серверного процесса.

Этот график сравнивает время компиляции («пропускную способность»), отношение JIT64 к RyuJIT на различных примерах кода. Чем больше число, тем лучше.

png;base6426d20839cddfc35c

В то время как все образцы компиляции кода быстрее с RyuJIT, следует отметить, вторую линию — RFC822. Она буквально зашкаливает! Это потому что регулярные выражения (a.k.a RegEx), как правило, выполняются особенно плохо на JIT64. Компиляция этого теста на JIT64 занимает 60 секунд и потребляет 1,4 Гб в пик работы. С RyuJIT, это займет всего 1,8 секунды и будет использовать 199 Мб.

Paint.NET является более нормальным примером победы RyuJIT. На запуск ушло от 2,3 секунд до 1,8. Это указывает на уменьшение время компиляции с 1510 мс на JIT64 до 970 мс на RyuJIT. Быстрая компиляция с меньшим использованием памяти делает любой код лучше.

 Лучшее еще ​​впереди

Повышение производительности RyuJIT фантастическое, но это не самая лучшая часть RyuJIT. Когда JIT64 была разработана, мы решили основать его на C++ компиляторе вместо того, чтобы основывать на существующих 32-разрядных x86 JIT, который более приспособлен к динамической компиляции сценариев.

RyuJIT базируется не на кодовой основе, как x86 JIT . Хотя это только для x64 , это современный компилятор, который будет основой всех наших JIT компиляторов в будущем: x86 , ARM, MDIL и для всего, что появляется. Наличие единой кодовой базы означает, что .NET программы являются более последовательными между архитектурами. Один код позволит нам быстрее вводить инновации и принесет вам больше возможностей генерации кода.

Что мне нужно сделать, чтобы получить это?

RyuJIT доступен прямо сейчас, как CTP, который вы можете попробовать в вашем непроизводственной среде. Он не поддерживается для написания кода прямо сейчас, но мы определенно хотим знать о любых вопросах, ошибках или поведенческих различиях, с которыми вы сталкиваетесь. Отправляйте отзывы и вопросы на ryujit@microsoft.com.

Вы можете скачать RyuJIT прямо сейчас. Он работает только на 64-разрядной версии ОС Windows 8.1 или Windows Server 2012 R2. Кроме того, RyuJIT не меняется NGen на вашей системе.

После установки , есть два пути , чтобы включить RyuJIT . Если вы просто хотите включить RyuJIT для одного приложения, установить переменную окружения: COMPLUS_AltJit = * . Если вы хотите включить RyuJIT для всей машины, задать раздел реестра HKLM \ SOFTWARE \ Microsoft \ . NETFramework \ AltJit в строку «*». И методы, которые вызываются 64-разрядной CLR будут использовать RyuJIT вместо JIT64.

Ссылка на источник: RyuJIT: The next-generation JIT compiler for .NET

 

Реклама
Tagged with: , , , , ,
Опубликовано в Development

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: