В чем разница между Portable и win-x64 при развертывании? - PullRequest
0 голосов
/ 20 декабря 2018

Я развертываю свой код в IIS на Windows Server 2016 и пытаюсь понять эффективную разницу между выбором Portable против win-x64 в раскрывающемся меню «Публикация / Настройки / Целевая среда выполнения».

Будет ли сайтзаймет больше времени для запуска в Portable, потому что JIT необходимо скомпилировать код для конкретной архитектуры?Есть ли еще что-нибудь?

enter image description here

1 Ответ

0 голосов
/ 20 декабря 2018

Редактировать - Короткий ответ

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

Если вы выберете x64, приложение не будет тормозить компиляцию, поскольку это уже выполняется процессом публикации на компьютере сборки (на вашем ноутбуке).).


Оригинальный ответ

При выборе варианта публикации Portable вы получите пакет, который может работать на x86 (32-разрядные машины и 64-разрядные машины.Выбрав переносимый параметр, при запуске приложения вы получите скомпилированный JIT-код для целевой машины (x64 или x86), поскольку приложение продолжает работать.Однако, если приложение закрывается, весь код, который был скомпилирован JIT, будет потерян.Скомпилированный код хранится в памяти до завершения процесса приложения.При следующем запуске JIT должен будет скомпилировать приложение снова, когда оно используется.Преимущество здесь в том, что вам нужно будет распространять только один пакет, и он будет работать на обоих компьютерах x86 / x64.

Альтернативой является создание нескольких пакетов, по одному для каждой целевой платформы, которую вы собираетесь распространять.приложение, хотя.В этом случае вы получите специфичные для машины пакеты, которые уже скомпилированы и не требуют перекомпиляции даже после завершения процесса приложения и его перезапуска позже.В этом случае ваше приложение будет работать быстрее, поскольку компиляция выполняется один и только один раз на сервере / машине сборки.Однако это влияет на ваш стиль развертывания.

Дополнительную информацию об идентификаторах среды выполнения .NET можно найти здесь: https://docs.microsoft.com/en-us/dotnet/core/rid-catalog

А хороший документ по скомпилированному коду JIT находится здесь: https://www.telerik.com/blogs/understanding-net-just-in-time-compilation

...