如果Ngen不保护我的申请,我何时会合理地期望在我的职业生涯中使用这个应用程序?
答案 0 :(得分:2)
亮点:
同时,还有几个潜力 有关NGen文件的问题:
没有知识产权保护。很多人都相信 有可能发货NGend 文件没有发送 包含原始的IL代码 从而保持他们的智力 财产是一个秘密。不幸的是,这个 不可能。在运行时,CLR 需要访问程序集 元数据和NGend文件没有 包含元数据。
NGend文件可能会失去同步。当CLR加载时 NGen的文件比较了一些 有关的属性 以前编译的代码和 当前的执行环境。如果有的话 属性不匹配然后 NGen文件无法使用和 使用正常的JIT编译器进程 代替。
管理不善。 NGen文件不会自动删除 装配卸载不利 轻松影响.NET框架 管理和XCOPY部署 故事。
劣质负载时间性能(重新定位)。当Windows加载时 NGend文件,它检查是否 文件加载在其首选基础上 地址。如果文件不能加载它 首选基地址,然后是Windows 重新定位文件,修复所有 内存地址引用。这是 非常耗时,因为 Windows必须将整个文件加载到 内存并修改其中的各种字节 文件。有关的更多信息 重新定位请看我的书: Microsoft的编程应用程序 Windows,第4版(微软 出版社)。
劣质执行时间表现。
编译代码时,NGen无法像JIT编译器那样对执行环境做出尽可能多的假设。这会导致NGen.exe生成具有许多内存引用间接的代码,这些代码对于JIT编译代码不是必需的
答案 1 :(得分:1)
NGen仅用于编译IL以提高性能。您可能希望查看代码混淆,以保护应用程序免受逆向工程。
答案 2 :(得分:0)
加载速度是它真正有用的全部。也就是说,它可以达到2000%(是的,这是正确的)改进。
编辑:
请注意,JIT代码通常比NGEN代码更快。