두 개의 클래스 필드를 기반으로 정렬하는 CompareTo 메서드로 매우 간단한 SortedSet을가집니다. 이 컬렉션을 사용함에 따라이 콜렉션은 꽤 많이 (백만 + 객체) 얻을 수 있고 시간이 지남에 따라 커지고 성장할 수 있습니다. 나는 새로운 값이 이미 콜렉션에 존재 하는지를 결정하기 위해 간단한 Contains 메쏘드를 사용 해왔다. ...SortedSet <T> 대 Linq 쿼리 포함
학문적 연습으로 Linq (나는 상당히 새로운 것)를 사용하여 벤치마킹을하고있다. 내가 Linq에 대해 약간의 이해가 있다는 것은 확신 할 수 있습니다. 왜냐하면 저는 같은 성능에 원격으로 가까이 갈 수 없기 때문에 부족합니다. Linq 전문가가 속도를 낼 수있는 방법에 대한 지침을 줄 수 있는지 궁금합니다.
public int CompareTo(EntityHistoryChange other)
{
int recordIdComp = Recordid.CompareTo(other.Recordid);
int tableIdComp = Tablename.CompareTo(other.Tablename);
if (recordIdComp == 0 && tableIdComp == 0)
return 0;
else if (recordIdComp != 0)
return recordIdComp;
else
return tableIdComp;
}
간단한 목록에 해당 LINQ 쿼리
가 :var handledChange = from thisChange in handledChanges
where thisChange.Recordid == recordId
&& thisChange.Tablename == tableName
select thisChange;
나는 결과는 나를 놀라게하지 말아야 가정
그래서 ... 목적은 다음과 같이 뭔가를 보이는 compareTo와 있습니다. ..
Linq Lookup on 18772 rows: 46 ms
SortSet Lookup on 18772 rows: 3 ms
그래서 문제는 무엇입니까? - 동일한 LINQ 메커니즘이 무엇입니까?
Linq가 추가 한 추상화 계층을 고려하면 꽤 좋은 성능 인 것처럼 보입니다. –