RyuJIT — компилятор JIT .NET нового поколения


В наши дни новостей о самой .NET не так много, поэтому давайте отметим тот факт, что есть новый JIT-компилятор, который можно опробовать.

Более широкий мир .NET находится в некоторой степени облачности из-за того, что Microsoft приняла WinRT в качестве своего нового плаката для приложений. Языкам C # и Visual Basic можно разрешить играть с WinRT, но у базовой системы .NET не так много планов по внедрению. Silverlight уходит, в этом мы уверены, но будущее других технологий .NET отнюдь не надежно.
Не все разделяют эту точку зрения, но ясно, что скорость прогресса в мире .NET не такая, как раньше.
Так что новости о RyuJIT были встречены с большим энтузиазмом. Раньше новости об обновлении до JIT могли остаться незамеченными, так как последней настройке WPF уделялось все внимание.
RyuJIT, и это действительно отличное название, не так ли, это 64-битный JIT-компилятор для CLR. На всякий случай, если вы забыли, обычный метод запуска .NET-программы — скомпилировать ее в MSIL — промежуточный машинно-независимый код. Затем JIT компилирует это в машинный код, когда программа действительно запускается. Это означает, что тот же самый JIT компилирует код MSIL из C #, VB или любого языка .NET.
Обычно считается, что 64-битные программы всегда работают быстрее, чем 32-битные программы, но это верно только в том случае, если они используют 64-битные данные. Большинство программ страдают от падения производительности в 64-битных версиях хотя бы потому, что их указатели вдвое длиннее. Чтобы получить что-то от 64-битной архитектуры, компилятор должен использовать увеличенное количество регистров и провести оптимизацию.
Текущий 64-битный JIT-компилятор в .NET создает хороший код, но выполняет свою работу медленно. Первоначальная идея заключалась в том, что 32-битный JIT должен быть быстрым, а не создавать хороший код, потому что это то, что имело значение на настольных компьютерах, тогда как 64-битный JIT в основном использовался на серверах, где качество кода имело значение, а время запуска — нет.
Утверждается, что новый JIT-компилятор в два раза быстрее старого. Это означает, что 64-разрядные приложения .NET запускаются примерно на 30% быстрее — не все время запуска зависит от JIT. Это может показаться не очень большим, но есть крайние примеры, когда прирост скорости намного больше. Например, в одном тестовом примере с использованием регулярных выражений продолжительность компиляции составила всего 1,8 секунды. Также есть выигрыш в размере рабочего набора — программа регулярных выражений перешла с пикового рабочего набора 1,4 ГБ до 199 МБ. Так что в некоторых случаях улучшение будет очень заметным.
Команда .NET заявляет, что большое внутреннее преимущество и то, что окупится в будущем, состоит в том, что он основан на той же кодовой базе, что и x86 JIT, и станет основой для всех будущих JIT-компиляторов. На данный момент он может быть только 64-битным, но планируется, что он будет ориентирован на 32-битные архитектуры Intel и ARM.
В настоящее время JIT-компилятор работает только под Windows 8.1 или Server 2012R2, конечно, 64-бит, но есть планы, что он будет работать с другими версиями.

Больше информации
RyuJIT: JIT-компилятор нового поколения для .NET.
Статьи по Теме
Доступен релиз-кандидат Visual Studio 2013
Visual Studio 2012 с обновлением 2
Microsoft меняет мнение — разработчики могут получить 8.1 раньше
Команда Microsoft объясняет языковую стагнацию
Предварительная версия Visual Studio 2013
Сброс .NET — безумие Microsoft

Чтобы получать информацию о новых статьях на I Programmer, установите панель инструментов I Programmer, подпишитесь на RSS-канал, подпишитесь на нас в Twitter, Facebook, Google+ или Linkedin или подпишитесь на нашу еженедельную новостную рассылку.

Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info


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