Производительность надстроек

Производительность надстройки можно повысить, воспользовавшись нейтральной к домену загрузкой контракта конвейера. Для повышения эффективности активации можно создать собственные изображения для сегментов конвейера.

Нейтральная к домену загрузка повышает производительность междоменных вызовов

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

Сборка должна иметь строгое имя, быть установлена в глобальном кэше сборок, а также иметь атрибут LoaderOptimizationAttribute с установленным флагом LoaderOptimization.MultiDomainHost или LoaderOptimization.MultiDomain.

Отказ от использования JIT-компилятора повышает эффективность активации

Использование JIT-компилятора существенного увеличивает накладные расходы по производительности при активации надстройки, особенно в том случае, если надстройка активируется в отдельном домене приложения. Чтобы избежать использования JIT-компилятора, соблюдайте следующие инструкции:

  • Конвейерным сборкам нужно присваивать строгие имена, сборки должны устанавливаться в глобальный кэш сборок.

  • Для создания встроенных изображений для конвейерных сборок следует использовать Ngen.exe (генератор образов в машинном коде).

  • Необходимо убедиться, что сборка, которая содержит контракт, загружается как нейтральная к домену (см. предыдущий раздел).

    ПримечаниеПримечание

    Это правило особенно важно.Если контракт не загружен как нейтральный к домену, ни один из компонентов надстройки не сможет использовать собственные изображения.

  • Следует применить атрибут LoaderOptimizationAttribute к сборке главного узла с флагом MultiDomainHost или MultiDomain, чтобы разрешить совместное использование собственных изображений сборок .NET Framework в разных доменах приложений.

    ПримечаниеПримечание

    Такой рост производительности не будет заметен при выполнении в отладчике, так как в главном процессе (vshost.exe) не настроено совместное использование сборок.Можно отключить главный процесс, однако это не рекомендуется.Следует отказаться от замера производительности при выполнении в отладчике.

См. также

Ссылки

LoaderOptimizationAttribute

LoaderOptimization

Ngen.exe (генератор образов в машинном коде)

Основные понятия

Домены приложений и сборки