.NET Framework JIT и бульдозер, специальные инструкции - PullRequest
2 голосов
/ 21 февраля 2012

AMD Bulldozer успешно работает на серверном пространстве, но плохо работает на настольном компьютере. Насколько я понимаю, основная причина этого заключается в том, что серверные приложения были переписаны для использования специальных инструкций Bulldozer, которые до сих пор не используются в настольных приложениях. Будем ли мы ожидать, что компилятор Just in time (JIT) будет использовать их в версии 4.5, могут ли они вернуться к версии 4.0?

Уточнение. Насколько я понимаю, JIT компилируется для машины, на которой он запущен, а не для машины, на которой он был скомпилирован в инструкции IL. Утверждалось, что из-за этого JIT-приложения могут на самом деле иметь более высокую производительность, чем обычный код, который компилируется и связывается прямо в двоичный файл.

1 Ответ

1 голос
/ 21 февраля 2012

К сожалению, .NET JIT не особенно совершенен в отношении производительности:

  • Даже на серверах он не выполняет тяжелых оптимизаций, как компилятор C ++, хотя он имеет ту же информацию, что и компилятор C ++. Он просто не делает определенные вещи
  • Используются специальные инструкции только для некоторых операций с числами с плавающей запятой
  • x64 даже имеет проблемы с качеством из-за недопустимой оптимизации
  • Некоторые очевидные оптимизации, такие как Escape-анализ, отсутствуют

Кажется, что JIT не разрабатывается с особенно высоким бюджетом. Поэтому я сомневаюсь, что мы увидим такие специализированные инструкции.

...