c# - 使 .NET 可执行文件在第一时间加载得更快

标签 c# .net performance

我用 C# 制作了一个简单的 Windows 窗体可执行文件(简单的意思是它有大约 20 个方法,但它只是一个窗口),目标是 .NET Framework 2.0。当应用程序加载时,除了构造函数中的默认 InitializeComponent(); 之外,它不会执行任何其他操作。

我第一次打开时,应用程序需要大约 7 秒才能加载到我的 Windows 8 中。然后我下次打开它时只需不到一秒钟。

在我试过的 Windows XP 中,第一次加载大约需要 30 秒。我的几个 friend 在测试应用程序时,也提示第一次加载需要很多时间(大约 30 秒)。然后它会更快(1 或 2 秒)。

我认为这可能是因为 .NET Framework 尚未加载,因此需要一些时间才能加载到他们的机器中。

您是否遇到过与 .NET 应用程序相同的问题?
您知道为什么会发生这种情况吗?我该如何解决?

编辑 - 我看到有些人建议使用 NGEN。但是,如果这需要在每台将使用该应用程序的机器上完成,那么它就不是解决方案。我想将我的应用程序发布给大量“普通用户”,如果我要求他们做一些额外的事情来使用我的应用程序,那是没有意义的。我们需要 .NET Framework 已经够糟糕了。我的应用程序应该只是一个独立的 EXE,没有任何依赖项(框架除外)。

谢谢。

最佳答案

您可以尝试使用 .NET 在您的应用程序加载时使用的 NGEN 预生成 native 图像。

您可以在此处找到更多信息 - http://msdn.microsoft.com/en-GB/library/6t9t5wcf(v=vs.80).aspx

这些取决于平台并且通常不可转移,因此您需要在部署的每台机器上执行此操作。

关于c# - 使 .NET 可执行文件在第一时间加载得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649402/

相关文章:

c# - MediatR 不处理逆变通知

c# - 绑定(bind)数据源更改时控件不更新?

r - 在 R 中查找感染链的方法比 "while"循环更快

c# - 邮箱名称不允许。服务器响应为 : 5. 7.1 <sender@abcd.com>:发件人地址被拒绝:未登录

c# - 单元测试的 Web 资源

c# - Unity 3D 质量设置之间隐藏的差异?

.net - 是否定义了字符串到 double 方法的舍入行为?

c# - 使用正则表达式从此字符串获取字符串模式

performance - 如何实现线程化评论?

引用主键时 SQL 查询非常慢