1. Dictonary<TKey, TValue>.ContainsKey(TKey) 메서드는
Dictionary에 지정한 키가 포함되어 있는지 여부를 확인하는 메서드 입니다.
Boolean으로 반환하며, 키가 있는 요소가 포함되어 있으면 true, 없으면 false를 반환합니다
2. Dictionary<TKey, TValue>.TryGetValue(TKey, TValue) 메서드는
Dictionary에 지정한 키가 포함되어 있는지 여부를 확인하는 메서드 입니다.
마찬가지로 Boolean으로 반환하며, 키가 있는 요소가 포함되어 있으면 true, 없으면 false를 반환합니다
아래 코드로 벤치 마크 결과 TryGetValue가 약간 더 빨랐습니다.
static void Main(string[] args)
{
const int size = 1000000;
var dict = new Dictionary<int, string>();
for (int i = 0; i < size; i++)
{
dict.Add(i, i.ToString());
}
var sw = new Stopwatch();
string result;
sw.Start();
for (int i = 0; i < size; i++)
{
if (dict.ContainsKey(i))
result = dict[i];
}
sw.Stop();
Console.WriteLine("ContainsKey + Item for {0} hits: {1}ms", size, sw.ElapsedMilliseconds);
sw.Reset();
sw.Start();
for (int i = 0; i < size; i++)
{
dict.TryGetValue(i, out result);
}
sw.Stop();
Console.WriteLine("TryGetValue for {0} hits: {1}ms", size, sw.ElapsedMilliseconds);
}
(ContainsKey + 1000000 조회수 : 45ms)
(1000000 조회에 대한 TryGetValue : 26ms)
공통점
- 내부적으로 동일한 검사를 사용함.
- Item 속성은 실제로 TryGetvalue false와 같은 예외를 throw 한다는 점 제외하면 대부분 동일함.
차이점
- ContainsKey는 기본적으로 사용 되는 Item에 조회 기능이 복제되며, 이 경우 대부분 계산이 수행됨.
잘 정리해 둔 블로그 주소
'클라이언트 프로그래머의 일기 > 신입 클라이언트 프로그래머의 일기' 카테고리의 다른 글
공부할내용 (0) | 2020.10.14 |
---|---|
SeasonEventManager.MiniGame.cs 분석 (0) | 2020.10.14 |
UI_CharCustomize 분석 (0) | 2020.10.13 |
#if UNITY_EDITOR || UNITY_STANDALONE_WIN (0) | 2020.10.13 |
c# Mathf.Ceil과 Mathf.CeilToInt 그리고 list의 GetRange() (0) | 2020.10.13 |