Linq查找最大值max最小值min效率比较

对linq查找极值的几种方法做一个效率上的比较

// 首先创建了一个10_000_000大小的PointF列表
var rdn = new Random();
var points = Enumerable
    .Range(0, 10_000_000)
    .Select(t =>
        new PointF((float)rdn.NextDouble() * 200, (float)rdn.NextDouble() * 200))
    .ToList();

// 方法一:最小/最大值只排一次序
var sth = new Stopwatch();
sth.Start();
var orderPX = points.OrderBy(t => t.X).ToList();
var orderPY = points.OrderBy(t => t.Y).ToList();
var minX = orderPX.First().X;
var maxX = orderPX.Last().X;
var minY = orderPY.First().Y;
var maxY = orderPY.Last().Y;
Console.WriteLine($"{nameof(minX)}:{minX}, {nameof(maxX)}:{maxX}, {nameof(minY)}:{minY}, {nameof(maxY)}:{maxY}");
Console.WriteLine($"OrderBy:{sth.Elapsed}");

// 方法二:先获取值,在排序
sth.Restart();
var orderX = points.Select(t => t.X).OrderBy(t => t).ToList();
v

你可能感兴趣的:(c#)