我有一个输入法(输入法)程序建立与C#.NET 2.0dll通过C++/CLI。由于输入法总是附加到另一个应用程序,所以C#.NET动态链接库似乎无法避免映像地址的重新定址。
虽然我已经应用ngen创建了C#.NET 2.0DLL的本机映像,并将其安装到全局程序集缓存中,但它并没有太大的改进,大约12秒。降到9秒。在一台速度较慢的PIII级PC上。
因此,我使用一个小应用程序,该应用程序在启动时加载C#.NET DLL引用的所有组件,以“预热”该DLL的本机映像。它可以很好地将加载时间加快到0.5秒。
然而,它只起了一段时间的作用。大约30分钟。后来,它似乎又“降温”了。
有没有办法控制GAC或本机镜像的行为总是“热”的?这到底是一个镜像地址重定基数的问题吗?
发布于 2009-09-14 19:27:44
我认为最有可能的是Windows缓存中的框架库和CLR本身。
你可能会发现,一个小应用程序只是坐在后台,也许每分钟向文件写入一个字节(或者其他一些无意义的任务,提供足够的活动来保持所有相关文件加载到缓存中)就足以让事情“温暖”。
它至少值得一试--它应该不会花很长时间去写。
https://stackoverflow.com/questions/1423419
复制相似问题