C\#List<T>의 Contains,Exists,Any,Where 성능 비교

테스트
Person 클래스 새로 만 들 기

public class Person
  {
    public Person(string name,int id)
    {
      Name = name;
      Id = id;
    }
    public string Name { get; set; }
    public int Id { get; set; }

  }
목록 초기 화
100 만 개의 데이터 가 있 습 니 다.그리고 각각 방법 을 통 해 xiaoming 이 List 에 있 는 지 여 부 를 판단 합 니 다.코드 는 다음 과 같 습 니 다.

static void Main(string[] args)
    {
      List<Person> persons = new List<Person>();
      //   persons  
      for (int i = 0; i < 1000000; i++)
      {
        Person person = new Person("My" + i,i);
        persons.Add(person);
      }
      Person xiaoming=new Person("My999999", 999999);
      
      //          persons     xiaoming
      Stopwatch watch = new Stopwatch();
      watch.Start();
      bool a = persons.Contains(xiaoming);
      watch.Stop();

      Stopwatch watch1 = new Stopwatch();
      watch1.Start();
      bool b = persons.Exists(x=>x.Id==xiaoming.Id);
      watch1.Stop();

      Stopwatch watch2 = new Stopwatch();
      watch2.Start();
      bool c = persons.Where(x=>x.Id==xiaoming.Id).Any();
      watch2.Stop();

      Stopwatch watch3 = new Stopwatch();
      watch3.Start();
      bool d = persons.Any(x => x.Id == xiaoming.Id);
      watch3.Stop();

      Console.WriteLine("Contains  :" + watch.Elapsed.TotalMilliseconds);
      Console.WriteLine("Exists  :" + watch1.Elapsed.TotalMilliseconds);
      Console.WriteLine("Where  :" + watch2.Elapsed.TotalMilliseconds);
      Console.WriteLine("Any  :" + watch3.Elapsed.TotalMilliseconds);
      Console.ReadLine();
    }
실행 결 과 는 아래 그림 과 같다.

결론.
위의 그림 을 통 해 성능 순 서 를 알 수 있 습 니 다.Contains > Exists > Where > Any주의:
Contains 에서 검색 조건 을 가 져 올 수 없습니다.
C\#List<T>의 Contains,Exists,Any,Where 성능 대비 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 C\#Contains,Exists,Any,Where 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 우 리 를 많이 지지 해 주시 기 바 랍 니 다!

좋은 웹페이지 즐겨찾기