2

我有一个通过 C++/CLI 使用 C#.NET 2.0 DLL 构建的输入法 (IME) 程序。由于 IME 总是附加到另一个应用程序,因此 C#.NET DLL 似乎无法避免图像地址变基。

尽管我已应用 ngen 创建该 C#.NET 2.0 DLL 的本机映像并将其安装到全局程序集缓存中,但它并没有太大改善,大约 12 秒。低至 9 秒。在缓慢的 PIII 级 PC 上。

因此,我使用了一个小型应用程序,它在启动时加载 C#.NET DLL 引用的所有组件,以“预热”该 DLL 的本机映像。它可以将加载时间加快到 0.5 秒。

然而,它只工作了一段时间。约30分钟。后来,它似乎又“降温”了。

有什么方法可以控制 GAC 或本机图像的行为始终“热”?这完全是图像地址变基问题吗?

4

1 回答 1

0

我认为它很可能是框架库和 CLR 本身在 Windows 缓存中。

您可能会发现,一个仅位于后台的小型应用程序,可能每分钟向文件写入一个字节(或其他一些无意义的任务,它提供了足够的活动以将所有相关文件加载到缓存中)足以保持东西“温暖”。

至少值得一试——写起来应该不会花很长时间。

于 2009-09-14T19:27:43.563 回答