TeamCity.MSBuild.Logger/DescendingByElapsedTime.cs (28 lines of code) (raw):

namespace TeamCity.MSBuild.Logger { using System; using System.Collections.Generic; internal class DescendingByElapsedTime : IComparer<IPerformanceCounter> { public static readonly IComparer<IPerformanceCounter> Shared = new DescendingByElapsedTime(); private DescendingByElapsedTime() { } public int Compare(IPerformanceCounter x, IPerformanceCounter y) { if (x == null || y == null) { return 0; } if (!x.ReenteredScope && !y.ReenteredScope) { return TimeSpan.Compare(x.ElapsedTime, y.ElapsedTime); } if (x.Equals(y)) { return 0; } return x.ReenteredScope ? -1 : 1; } } }