Производительность надстроек
Производительность надстройки можно повысить, воспользовавшись нейтральной к домену загрузкой контракта конвейера. Для повышения эффективности активации можно создать собственные изображения для сегментов конвейера.
Нейтральная к домену загрузка повышает производительность междоменных вызовов
При загрузке надстройки в домен отдельного приложения вызовы между основным приложением и надстройкой маршалируются конвейером между границами доменов. Производительность таких междоменных вызовов будет существенно выше, если сборка, которая содержит контракт, будет загружена как нейтральная к домену.
Сборка должна иметь строгое имя, быть установлена в глобальном кэше сборок, а также иметь атрибут LoaderOptimizationAttribute с установленным флагом LoaderOptimization.MultiDomainHost или LoaderOptimization.MultiDomain.
Отказ от использования JIT-компилятора повышает эффективность активации
Использование JIT-компилятора существенного увеличивает накладные расходы по производительности при активации надстройки, особенно в том случае, если надстройка активируется в отдельном домене приложения. Чтобы избежать использования JIT-компилятора, соблюдайте следующие инструкции:
Конвейерным сборкам нужно присваивать строгие имена, сборки должны устанавливаться в глобальный кэш сборок.
Для создания встроенных изображений для конвейерных сборок следует использовать Ngen.exe (генератор образов в машинном коде).
Необходимо убедиться, что сборка, которая содержит контракт, загружается как нейтральная к домену (см. предыдущий раздел).
Примечание
Это правило особенно важно.Если контракт не загружен как нейтральный к домену, ни один из компонентов надстройки не сможет использовать собственные изображения.
Следует применить атрибут LoaderOptimizationAttribute к сборке главного узла с флагом MultiDomainHost или MultiDomain, чтобы разрешить совместное использование собственных изображений сборок .NET Framework в разных доменах приложений.
Примечание
Такой рост производительности не будет заметен при выполнении в отладчике, так как в главном процессе (vshost.exe) не настроено совместное использование сборок.Можно отключить главный процесс, однако это не рекомендуется.Следует отказаться от замера производительности при выполнении в отладчике.
См. также
Ссылки
Ngen.exe (генератор образов в машинном коде)