Поделиться через


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

Обновлен: Ноябрь 2007

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

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

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

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

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

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

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

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

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

    Bb892925.alert_note(ru-ru,VS.90).gifПримечание.

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

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

    Bb892925.alert_note(ru-ru,VS.90).gifПримечание.

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

См. также

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

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

Ссылки

LoaderOptimizationAttribute

LoaderOptimization

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