【问题标题】:Why is .net core 1.0 apparently much slower than .net framework apps?为什么 .net core 1.0 明显比 .net 框架应用程序慢得多?
【发布时间】:2016-08-25 17:29:19
【问题描述】:

我刚刚重构了一个现有的控制台应用程序以符合 .net core 1.0。

当我在 .net 4.5.2(即作为 exe)上编译和运行重构代码时,它会在 12 秒内运行。当我在 .net core 1 上运行相同的代码(即使用“dotnet”)时,它运行时间为 24.3 秒,是原来的两倍多。

这是预期的行为吗?如果没有,我可以检查哪些内容?

迈克尔

【问题讨论】:

  • 你能说明你是dotnet run myproject还是dotnet myproject.dll。第一个做了很多检查和按需编译,第二个只是执行一个 dll。结果大相径庭。
  • 我使用的是“dotnet run..”我不知道还有其他选择。后来:我使用“dotnet publish”创建了应用程序及其支持库的文件夹,并通过“dotnet my_app.dll”执行。时机只好一点点。但是有一个可能的线索:当我执行“发布”时,它在 bin/Debug 之外创建了发布文件夹,这让我认为该应用程序可能因调试内容而臃肿(?)你可以在没有调试内容的情况下“发布”吗?这可能是考虑到我的缓慢?
  • 我刚刚发现了“dotnet publish”的“-c release”选项。看起来,生成的应用程序比其中包含调试信息的应用程序快得多。事实上,它似乎与在 .net 框架库上作为可执行文件运行的相同代码的速度大致相同。
  • @MichaelRayLovett 仅供参考,这与“调试信息”无关,而与“调试模式”有关。在这种模式下,C# 编译器和 CLR JIT 编译器都会故意生成次优代码。

标签: performance .net-core


【解决方案1】:

通常怀疑:您是否在发布模式下构建(或发布)?试试

dotnet publish -c release

请注意,这将在当前目录中查找project.json 文件。 More information is provided here

【讨论】:

  • 发布文档没有明确说明存在性能影响。但显然有......
  • 我猜他们认为这是理所当然的,因为 DEBUG 和 RELEASE 模式之间一直存在巨大的性能差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多