2009-06-25 3 views
6

Я работаю над приложением WinForms, которое содержит около 5 ссылочных ассемблеров, написанных нами, и около 8 ссылочных сборок третьими лицами (мы не будем надеяться обновить их в будущем, если что-то не произойдет ужасно неправильно - Infragistics/компоненты DevExpress!).Рекомендации по применению NGen и Gacutil

Наши стартапные времена слишком высоки на холодных ботинках, мне интересно, добавляет ли их в Gac и ngen'ing их путь.

Когда мы устанавливаем в кэш NGEN, нужно ли это также в gac? Какая связь между ними? На что я должен стремиться? У нас есть один exe, я бы сделал ILMerge, но я не уверен, что это будет работать в нашем сценарии - длинный рассказ.

Кроме того, можно получить, сколько памяти мой ехе берет - так же, как приложения Java делают

+1

Возможно, вы захотите провести опрос с помощью профилировщика, чтобы узнать, что вызывает медленность. ANTS (по RedGate) является хорошим. – Pondidum

ответ

0

Звуки мне, что ваше определение проблемы как-то подразумевает ваше решение ☺

(как Netbeans!)

Другими словами, откуда вы знаете, что время запуска происходит от загрузки сборок?

Что вы должны сделать, это профилировать приложение и убедиться, что это так. Это возможно, но что делать, если какая-то инициализация продолжается, и вы слишком много фокусируете на оптимизации неправильного места?

Here Есть некоторые инструменты, которые должны помочь вам профилировать неуправляемые приложения.

Поскольку вы говорите о приложениях Winforms, я предполагаю, что у вас есть Visual Studio. Если это так, вы можете использовать its profiler для вашего управляемого приложения.

Удачи вам!

0

Если вы не используете 3.5 SP1 в инфраструктуре .net, вы должны рассмотреть бенчмаркинг на этой платформе, чтобы узнать, есть ли у вас разница. Там были улучшения, сделанные, которые могли бы улучшить время запуска приложения: CLR Optimizations In .NET Framework 3.5 SP1

This article также имеет некоторые хорошие общие принципы, NGEN лучшие практики и фокусы с избежать перебазирования ваших сборок (хотя для 5 или так ссылочных сборок вы работаете с, не ожидайте чудеса).

Однако, скорее всего, вы получите наиболее значимое сокращение времени запуска путем поиска конкретных узких мест в вашем конкретном приложении, а не поиска быстрого исправления в другом месте.

4

Основная идея, чтобы улучшить время запуска, заключается в использовании отложенной инициализации, когда это возможно. Не создавайте экземпляры, которые не нужны сразу после запуска. Используйте шаблон lazy init. Также можно запустить работника инициализации фона после отображения основной формы, чтобы выполнить некритическую инициализацию. Etc и т. Д.

Вы также можете проверить следующее: article (Improving Application Startup Time).

+1

+1 для статьи CLR Inside Out, посвященной улучшению времени запуска приложения. Очень полезно. (Вы должны включить заголовок статьи в свою гиперссылку, хотя я почти не щелкнул ее.) – dthrasher

Смежные вопросы