首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高.NET装配加载性能

如何提高.NET装配加载性能
EN

Stack Overflow用户
提问于 2014-07-24 11:59:29
回答 2查看 1.9K关注 0票数 5

我们有一个大约50个程序集(DLL文件)的产品,其中大多数是需要的,并在主可执行文件的启动时加载。其结果是,即使在速度适中的机器上,程序集的加载时间和对它们的JIT‘处理也需要2-3秒,这在我们的例子中是不可接受的开销。

如果我们加载程序一次,并从相同的、仍在运行的可执行文件中多次运行它,则时间从几毫秒开始。但是对于最终用户来说,这不是一个选项,他们将从命令行运行它。

我想在第一次实例化可执行文件时加快加载速度。在冷启动(重新启动Windows之后)和温暖的启动之间有一个小的加速,但只是略微加速。我们可以在.NET中使用哪些技术或工具来加速加载(注意:我们尝试了ILMERGE,它只帮助了大约30%,而NGEN不是一个选项,它需要在各种系统和体系结构上运行)。

我正在考虑创建一个服务和/或一个特定的CLR托管环境,但希望有一个更简单、更简单的解决方案。我还没试过加航。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-24 19:58:19

使用NGEN和多核JIT。重构应用程序,使其在启动时需要更少的程序集和更少的代码。使用ILMerge可以减少程序集的数量,甚至可以减少一些未使用的代码。

所有这些都是您可以进行的优化。它们并没有提供突破性的改进。.NET没有这样的选项。

看看DevArt代码比较是如何做到的:他们总是让比较应用程序运行,因为启动它确实需要几秒钟。

让应用程序始终在后台运行。从命令行启动时,只需将命令中继到已经运行的后台进程,并转发结果。这使得命令行应用程序变得很小,并迅速启动。它当然不需要加载50个程序集。

这可能是你能做的最好的,因为它几乎完全消除了启动。

票数 1
EN

Stack Overflow用户

发布于 2014-07-24 12:35:14

仍然可以通过将NGEN作为部署包(安装项目)的一部分来使用NGEN。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24933091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档