1
19
是的,我看到了性能的提高。我的测量结果表明,如果我也将程序集放入GAC中,它确实提高了启动性能,因为我的程序集都是强名称的。如果您的程序集具有强名称,那么ngen在不使用GAC的情况下不会有任何区别。这样做的原因是,如果有不在GAC中的强名称程序集,.NET运行时通过从磁盘加载整个托管程序集来验证强名称程序集是否未被篡改,这样它就可以验证强名称程序集,从而绕过NGen的一个主要好处。 对于我的应用程序来说,这不是一个很好的选择,因为我们依赖于公司的公共程序集(也有很强的名称)。公共程序集被许多使用许多不同版本的产品使用,将它们放入GAC意味着如果我们的应用程序之一没有说某个公共程序集的“使用特定版本”,它将加载GAC版本,而不管其执行目录中的版本是什么。我们认为恩根的利益不值得冒险。 |
2
30
我不是每天都使用它,但是它被那些想要提高性能的工具所使用;例如,paint.net在安装过程中使用ngen(或者可能是第一次使用)。有些MS工具也有可能(尽管我不确定)。 基本上,ngen在组装前执行大部分的JIT,因此冷启动的延迟很小。当然,在大多数典型的用法中,从来没有100%的代码被达到,所以在某些方面,这做了很多 不必要的 工作-但不能提前告诉你。 缺点是,IMO,您需要使用GAC来使用NGEN;我尽量避免使用GAC,这样我可以使用Robocopy部署(到服务器)和ClickOnce(到客户机)。 |
3
8
ngen主要减少.NET应用程序的启动时间和应用程序的工作集。但它有一些缺点(从clr到jeffrey richter的c_): 无知识产权保护 ngen'd文件可能不同步 较低的加载时间性能(重新定位/绑定) 执行时间性能差 由于刚刚列出的所有问题,在考虑使用 NGen.exe。对于服务器端应用程序,ngen.exe几乎毫无意义,因为只有 第一个客户机请求遇到性能问题;未来的客户机请求以高速运行。在 另外,对于大多数服务器应用程序,只需要代码的一个实例,因此没有 工作福利。 对于客户端应用程序,ngen.exe可能有助于提高启动时间或减少 多个应用程序同时使用程序集时的工作集。即使在案件中 如果一个程序集不被多个应用程序使用,则生成一个程序集可以改进 工作集。此外,如果ngen.exe用于客户端应用程序的所有程序集,则clr 完全不需要加载JIT编译器,从而进一步减少工作集。当然,如果 只有一个程序集不是ngen'd,或者如果无法使用程序集的ngen'd文件,则使用jit编译器 将加载,应用程序的工作集将增加。 |
4
7
.NET框架本身使用
|
5
1
我使用它只是为了研究。只有在确定部署环境的CPU体系结构(它不会改变)时才使用它。 但是让我告诉您,JIT编译并不太糟糕,如果您在多个CPU环境(例如经常更新的Windows客户机应用程序)中进行部署,那么就不要使用NGEN。这是因为有效的NGEN缓存依赖于许多属性。如果其中一个失败,您的程序集将再次返回到JIT 在这种情况下,JIT显然是一个胜利者,因为它根据运行在其上的CPU体系结构实时优化代码。(例如,它可以检测是否有超过1个CPU) 而且,clr在每个版本中都会变得更好,所以简而言之,坚持使用jit,除非您完全确信部署环境——即使这样,您的性能提升也很难证明使用ngen.exe(可能只需几百毫秒)是合理的——imho——这不值得付出努力。 同时检查这个关于这个主题的链接。- JIT Compilation and Performance - To NGen or Not to NGen? |
6
0
对。用于WPF应用程序以加快启动时间。启动时间从9秒到5秒。在我的 blog :
|
7
0
作为MehrdadAfshari对JIT编译的评论的补充。如果通过XmlSerializer对具有许多属性的类进行序列化,并且在64位系统上使用sgen,则ngen组合可能具有 巨大的 (在我们的例子中是千兆字节和分钟)效果。 更多信息在这里: XmlSerializer startup HUGE performance loss on 64bit systems 尤其要看尼克·马蒂什琴科的回答。 |
8
0
是的,我用一个小的单CPU密集型的exe进行了尝试,而用ngen则稍微慢一点! 我多次安装和卸载了NGEN映像,并运行了一个基准测试。 我总是得到以下可复制的时间+/-0.1秒: 33.9s, 35.3S |
Hatsune Miku · 比较或if语句是否更快[已关闭] 1 年前 |
Black Swan · 无法解压缩的值太多(应为2)错误 1 年前 |
Kai · 有什么方法可以轻松优化VSCode中的锈迹? 2 年前 |
Balfar · 处理NumPy阵列上的循环最有效的方法是什么? 2 年前 |
Daniel · C#轻松存储快速访问的大型位矩阵 6 年前 |
halbe · 优化音频DSP程序的numpy计算 6 年前 |
Afsara · 是否有任何方法不能优化我们的应用程序? 6 年前 |