Как уменьшить количество .Net DLL, работающих по сети - PullRequest
3 голосов
/ 30 августа 2011

У нас есть программное решение .Net framework 4. с многочисленными файлами .dll.

Эти файлы размещаются на сетевом сервере и запускаются с клиентов в общей удаленной папке.

Мыхотите уменьшить количество DLL-файлов в этой папке на сервере.

Возникают некоторые вопросы:

  • Будет ли объединенный DLL-файл большего размера запускаться медленнее / быстрее / или выполнятьсячем много меньше .dll?
  • Есть ли преимущество в использовании NGen над файлами сетевой библиотеки, чтобы оптимизировать его для каждого клиента?

Большинство из этих .dll на самом делевызывается из 32-битного неуправляемого кода через видимый интерфейс COM.

1 Ответ

0 голосов
/ 30 августа 2011

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

Я бы не рекомендовал запускать NGen для библиотек DLL, которые обслуживаются по сети.NGen предназначен для компиляции и оптимизации для процессора, на котором он работает.Если ваши клиентские машины имеют разную архитектуру, образ NGen может быть меньше оптимального или может просто не работать.

Дополнения после комментариев:

См. Улучшение времени запуска приложения для получения дополнительной информации об улучшении времени запуска.Также Написание высокопроизводительных управляемых приложений: Учебник для начинающих .

Также обратите внимание, что загрузчик не JIT всей сборки.Это JITs по мере необходимости.Если ваша программа не использует класс, который находится в сборке, код этого класса никогда не будет JITted.Кроме того, метод не JITted до первого использования.Поэтому, если вы никогда не вызовете метод Foo.Bar(), он никогда не будет JITted.

...