KirillOsenkov / MSBuildStructuredLog

A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values.
MIT License
1.44k stars 191 forks source link

Breakdown "most expensive tasks" by parent. #532

Closed rodo-r2r closed 3 years ago

rodo-r2r commented 3 years ago

Show breakdown of "Top 10 most expensive tasks" by parent.

This addresses https://github.com/KirillOsenkov/MSBuildStructuredLog/issues/284 and shows a more detailed breakdown for other task types.

Sample output:

    Exec = 4:44.332
        ValidateAssemblyReferences = 4:42.379
        _GitBaseVersionFallback = 829 ms
        _GitRoot = 277 ms
        _GitCommit = 247 ms
        SetGitExe = 170 ms
        _GitBaseVersionTagExists = 156 ms
        _GitBaseVersionTag = 146 ms
        _EnsureGit = 125 ms
    Csc = 20.976 s
        CoreCompile = 20.976 s
    Copy = 17.290 s
        _CopyOutOfDateSourceItemsToOutputDirectory = 11.071 s
        _CopyFilesMarkedCopyLocal = 5.521 s
        CopyFilesToOutputDirectory = 411 ms
        _CopyAppConfigFile = 135 ms
        CopySQLiteInteropFiles = 74 ms
        CopyRoslynCompilerFilesToOutputDirectory = 68 ms
        _CopyBinDeployableAssemblies = 8 ms
    ResolveAssemblyReference = 8.104 s
        ResolveAssemblyReferences = 8.104 s
    ResolveNuGetPackageAssets = 1.213 s
        ResolveNuGetPackageAssets = 1.213 s
    ResolvePackageFileConflicts = 618 ms
        _HandlePackageFileConflicts = 618 ms
    FindUnderPath = 510 ms
        _CleanGetCurrentAndPriorFileWrites = 508 ms
        IncrementalClean = 2 ms
    WriteLinesToFile = 430 ms
        IncrementalClean = 193 ms
        _GenerateCompileDependencyCache = 118 ms
        AssembleDataPackageManifest = 71 ms
        CreateGeneratedAssemblyInfoInputsCacheFile = 47 ms
        _GitWriteCache =
        _GenerateRuntimeConfigurationFilesInputCache =
        CleanWebpackScripts =
    RestoreTask = 420 ms
        Restore = 420 ms
    RemoveDuplicates = 305 ms
        IncrementalClean = 159 ms
        _CleanGetCurrentAndPriorFileWrites = 90 ms
        Restore = 17 ms
        _GenerateRestoreProjectPathWalk = 15 ms
        _GenerateRestoreProjectPathItems = 15 ms
        _GetAllRestoreProjectPathItems = 6 ms
        _FilterRestoreGraphProjectInputItems =
rodo-r2r commented 3 years ago

Hi Kirill,

Thanks for creating this super useful tool! Are you accepting PRs for this repo?

I was trying to diagnose what all the "exec" time was in my build, ran across #284, and came up with this as a solution.

It doesn't do quite what the ticket requests (I look at parent instead of the executable), happy to rework it to be more "Exec" specific if you'd prefer it that way?