Как мне предотвратить восстановление моего кода Ngen (отрицательно влияет на производительность)?

StackOverflow https://stackoverflow.com/questions/3591699

Вопрос

Я просто хочу ускорить моего приложения для клиента .NET-базы и учитывая NGEN-ING код.

Джеффри Рихтер написал это ПРЕДУПРЕЖДЕНИЕ О ННГИНЕ КОД:

• Устойчивая производительность нагрузки (перенапряжение). Когда Windows загружает файл NGEND, он проверяет, если файл загружает на его предпочтительный базовый адрес. Если файл не может загружаться на предпочтительном базовом адресе, то Windows перемещает файл, исправляя все ссылки на адрес памяти. Это чрезвычайно потребление времени, поскольку Windows должна загрузить весь файл в память и изменять различные байты в файле. Для получения дополнительной информации о переадресации Пожалуйста, смотрите мою книгу: Приложения программирования для Microsoft Windows, 4-е издание (Microsoft Press).

Поскольку я не знаю много об этой теме, что я должен знать, прежде чем я начну меняю настройки в моем проекте, и какие настройки я должен изменить?

Это было полезно?

Решение

Согласно с Этот Microsoft Blog., «Могут быть некоторые маргинальные случаи, когда устанавливает базовые адреса в Vista + OSE, но они могут быть в значительной степени игнорируемыми». Итак, при использовании NGEN делает Улучшите время запуска, больше не нужно устанавливать базовые адреса, если вы не поддерживаете пре-Vista ON. Это побочный эффект новой функции безопасности Address Space Randomization.

Другие советы

Перемещение ваших DLL происходит только при времени загрузки, после нагрузки нет дальнейших просмотров производительности из-за процесса перемещения. Конечно, в зависимости от количества и размера DLL (количество переездов) время загрузки может быть значительно повлияно, что является проблемой, в том, что ваше приложение часто начинается и остановлено.

Передача DLL для улучшения времени нагрузки требует непрерывного мониторинга и настройки и настройки, если вы не оставили достаточно головы между местами DLL-нагрузки, которые вы заканчиваете столкновениями, поскольку DLLS растут или новые DLL в проекте добавляются в проект.

Вот пункт обсуждения статьи MSDN для улучшения времени запуска приложения.http://msdn.microsoft.com/en-us/magazine/cc163655.aspx.

NGEN позволяет вам указать базовый адрес (также открытый в настройках VS). Если вы собираетесь в NGEN, вы в основном хотите убедиться, что у вас нет перекрытия между DLL. Если у вас есть перекрытие, то CLR будет вынужден удалить их, когда они загружены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top