Кэш сборок .NET / режим разогрева и охлаждения изображений ngen / jit - PullRequest
2 голосов
/ 14 сентября 2009

У меня есть программа Input Method (IME), созданная с C # .NET 2.0 DLL через C ++ / CLI. Поскольку IME всегда подключается к другому приложению, DLL-библиотека C # .NET, похоже, не в состоянии избежать изменения адреса изображения.

Хотя я применил ngen для создания собственного образа этой DLL-библиотеки C # .NET 2.0 и установил его в глобальный кэш сборок, он значительно не улучшился, примерно за 12 секунд. до 9 сек. на медленном ПК уровня PIII.

Поэтому я использую небольшое приложение, которое загружает все компоненты, на которые ссылается C # .NET DLL во время загрузки, для «разогрева» собственного образа этой DLL. Он отлично работает, чтобы ускорить время загрузки до 0,5 сек.

Однако это работало только некоторое время. Около 30 мин. позже, кажется, снова «остынет».

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

1 Ответ

0 голосов
/ 14 сентября 2009

Я думаю, что, скорее всего, это будут библиотеки фреймворков и сам CLR в кеше Windows.

Вы можете обнаружить, что крошечное приложение, которое просто находилось в фоновом режиме, возможно, записывает байт в файл каждую минуту (или какая-то другая бессмысленная задача, которая обеспечивала достаточно активности для сохранения всех соответствующих файлов, загруженных в кэш) достаточно, чтобы держать вещи "в тепле".

По крайней мере, стоило бы попробовать - это не займет много времени, чтобы написать вообще.

...