我只是想加快我的.NET基本客户端应用程序,并正在考虑使用代码。

杰弗里·里希特(Jeffery Richter) 写了 警告关于ngening代码:

•下载时间较低(重新打击)。当Windows加载Ngend文件时,它会检查以查看文件是否在其首选基础地址加载。如果文件不能在其首选的基础地址加载,则Windows将重新定位文件,修复所有内存地址参考。这是非常耗时的,因为Windows必须将整个文件加载到内存中并修改文件中的各种字节。有关重新打击的更多信息,请参阅我的书:第四版Microsoft Windows的编程应用程序(Microsoft Press)。

既然我对这个主题了解不多,那么在开始更改项目中的设置之前,我应该知道什么,我应该更改什么设置?

有帮助吗?

解决方案

根据 这个Microsoft博客, ,“在某些边际案例中,远景+ OS中的基本地址有好处,但可以在很大程度上被忽略。”因此,在使用ngen时 提高启动时间,除非您支持前vista OS,否则不再需要设置基本地址。这是新地址空间布局随机安全功能的副作用。

其他提示

DLL的重新定位仅在加载时间发生,一旦加载,由于搬迁过程,就不会进一步命中。当然,取决于DLL的数量和大小(重新定位的数量),负载时间可能会受到重大影响,这是一个问题,是您的应用程序经常启动并停止。

重新安排DLL以提高负载时间需要连续的监视和调整,如果您在DLL负载位置之间没有足够的头部空间,随着DLL的增长或将新的DLL添加到项目中,您最终会出现碰撞。

这是MSDN文章讨论改善应用程序启动时间的方法。http://msdn.microsoft.com/en-us/magazine/cc163655.aspx

NGEN允许您指定一个基础地址(也可以在VS设置中公开)。如果您要去NGEN,您基本上想确保DLL之间没有任何重叠。如果您有重叠,那么CLR将在加载时被迫反弹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top