Кэш сборок.NET / режим разогрева и охлаждения образа ngen / jit
У меня есть программа ввода метода (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 ответ
Я думаю, что, скорее всего, это будут библиотеки фреймворков и сам CLR в кеше Windows.
Вы можете обнаружить, что крошечное приложение, которое просто находилось в фоновом режиме, возможно, записывает байт в файл каждую минуту (или какую-то другую бессмысленную задачу, которая обеспечивала достаточно активности для сохранения всех соответствующих файлов, загруженных в кэш), сделает достаточно, чтобы сохранить вещи "теплые"
По крайней мере, стоило бы попробовать - это не займет много времени, чтобы написать вообще.