还在用双层for循环优化

 

List<Person> list1 = new();
List<Person> list2 = new();
for (int i = 0; i < 10_0000; i++)
{
list1.Add(new Person() { PersonId = i});
list2.Add(new Person() { PersonId = i });
}
Stopwatch stopwatch = Stopwatch.StartNew();
test1(list1, list2);
stopwatch.Stop();
Console.WriteLine("for循环耗时:" + stopwatch.ElapsedMilliseconds);


Stopwatch stopwatch1 = Stopwatch.StartNew();
var intersectList = list1.Intersect(list2).ToList();
stopwatch1.Stop();
Console.WriteLine("Intersect循环耗时:" + stopwatch1.ElapsedMilliseconds);

 Person.cs类

    private static void test1(List<Person> list1, List<Person> list2)
    {
        foreach (Person before in list1)
        {
            foreach (Person after in list2)
            {
                if (before.PersonId.Equals(after.PersonId))
                {
                    //TODO 业务逻辑
                    break;
                }
            }
        }
    }
 

public class Person
{

    public int PersonId { get; set; }
}

 

posted @ 2022-11-04 09:08  vba是最好的语言  阅读(72)  评论(0编辑  收藏  举报