gpt4 book ai didi

performance - dotnet core 2 由于恢复时间长而构建时间长

转载 作者:行者123 更新时间:2023-12-02 01:11:45 24 4
gpt4 key购买 nike

我注意到在 dotnet core 2 中构建似乎慢了很多。
但构建后的计时总是显示“仅”15 秒。
我简直不敢相信,所以我用 time 计时。

> time dotnet build
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

hrm -> /Users/r/dev/hrm/bin/Debug/netcoreapp2.0/hrm.dll

Build succeeded.
0 Warning(s)
0 Error(s)

Time Elapsed 00:00:15.45

real 0m52.366s
user 0m36.851s
sys 0m15.458s

这似乎更正确。差不多一分钟了。
然后我尝试不恢复,速度快了很多:

> time dotnet build --no-restore
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

hrm -> /Users/r/dev/hrm/bin/Debug/netcoreapp2.0/hrm.dll

Build succeeded.
0 Warning(s)
0 Error(s)

Time Elapsed 00:00:15.39

real 0m15.795s
user 0m11.397s
sys 0m4.238s

但是 dotnet 也显示 15 秒。
难道只有建筑才算在计时中吗?
不知道为什么当一切都已恢复时恢复总是很慢。

还有其他方法可以加快构建过程吗?禁用遥测? (我使用的是 osx,我的环境设置为开发)

我更喜欢使用 dotnet watch run 但这似乎更慢。运行 dotnet watch 查看参数需要 12 秒。

> time dotnet watch
Microsoft DotNet File Watcher 2.0.0-rtm-26452

Usage: dotnet watch [options] [[--] <arg>...]

Options:
....


real 0m12.631s
user 0m8.880s
sys 0m3.816s

这仅适用于我的系统吗?

更新:

这是 dotnet Restore/clp:PerformanceSummary 的结果

> dotnet restore /clp:PerformanceSummary
Restore completed in 43.95 ms for /Users/roeland/dev/hrm/hrm.csproj.
Restore completed in 52.73 ms for /Users/roeland/dev/hrm/hrm.csproj.
Restore completed in 38.48 ms for /Users/roeland/dev/hrm/hrm.csproj.

Project Evaluation Performance Summary:
36252 ms /Users/roeland/dev/hrm/hrm.csproj 3 calls

Project Performance Summary:
36424 ms /Users/roeland/dev/hrm/hrm.csproj 9 calls
24359 ms Restore 1 calls
1 ms _IsProjectRestoreSupported 2 calls
12011 ms _GenerateRestoreProjectPathWalk 1 calls
1 ms _GenerateRestoreProjectPathItemsPerFramework 1 calls
43 ms _GenerateRestoreGraphProjectEntry 1 calls
0 ms _GetRestoreSettingsPerFramework 1 calls
6 ms _GenerateProjectRestoreGraph 1 calls
3 ms _GenerateProjectRestoreGraphPerFramework 1 calls

Target Performance Summary:
0 ms _GenerateRestoreGraphProjectEntry 1 calls
0 ms _GenerateProjectRestoreGraph 1 calls
0 ms _GetRestoreTargetFrameworksAsItems 1 calls
0 ms _GetRestoreProjectStyle 2 calls
0 ms CheckForImplicitPackageReferenceOverridesBeforeRestore 2 calls
0 ms _CheckForUnsupportedNETCoreVersion 1 calls
0 ms _IsProjectRestoreSupported 1 calls
0 ms _GetRestoreSettingsPerFramework 1 calls
0 ms _GetProjectJsonPath 2 calls
0 ms _GetRestoreSettingsOverrides 1 calls
1 ms _GenerateRestoreProjectPathWalk 1 calls
1 ms _GenerateRestoreProjectPathItemsPerFramework 1 calls
1 ms _GenerateRestoreSpecs 1 calls
1 ms _GenerateRestoreProjectSpec 1 calls
2 ms _GenerateProjectRestoreGraphPerFramework 1 calls
2 ms _GetRestoreTargetFrameworksOutput 1 calls
5 ms _GenerateRestoreDependencies 1 calls
10 ms _LoadRestoreGraphEntryPoints 1 calls
20 ms _GenerateDotnetCliToolReferenceSpecs 1 calls
21 ms _GetRestoreSettings 1 calls
54 ms _GenerateRestoreGraph 1 calls
216 ms Restore 1 calls
12007 ms _GenerateRestoreProjectPathItems 1 calls
12014 ms _GetAllRestoreProjectPathItems 1 calls
12058 ms _FilterRestoreGraphProjectInputItems 1 calls

Task Performance Summary:
1 ms Message 3 calls
1 ms ConvertToAbsolutePath 2 calls
1 ms GetRestorePackageReferencesTask 1 calls
1 ms GetRestoreProjectReferencesTask 1 calls
2 ms GetRestoreProjectFrameworks 1 calls
3 ms RemoveDuplicates 5 calls
4 ms WarnForInvalidProjectsTask 1 calls
18 ms GetRestoreSettingsTask 1 calls
20 ms GetRestoreDotnetCliToolsTask 1 calls
216 ms RestoreTask 1 calls
36121 ms MsBuild 9 calls

最佳答案

长话短说:MSBuild 根据所使用的 SDK 定义的 glob 模式扫描整个文件夹结构。这是针对每个项目评估完成的,并且 NuGet 恢复似乎会触发至少三个完整评估。

由于扫描大型目录的速度很慢,因此 SDK 定义了通配模式,用于排除一些通常不需要作为项目一部分的已知大型目录( node_modulesbower_components 等)。

众所周知,特殊情况可能会绕过这些优化,甚至触发包含/排除全局模式扩展/匹配中的性能错误。

作为预防措施,请将所有已知要排除的文件夹添加到 DefaultItemExcludes属性(<PropertyGroup> 元素内部):

<DefaultItemExcludes>custom\node_modules\**;$(DefaultItemExcludes)</DefaultItemExcludes>

关于performance - dotnet core 2 由于恢复时间长而构建时间长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45763755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com