더북(TheBook)

해시 값을 잘못 사용할 경우 딕셔너리가 연결 리스트보다 나은 점이 없다. 이러한 항목을 딕셔너리에서 다루려면 추가로 작업해야 하므로 성능이 더 나빠질 수 있다. 따라서 가장 중요한 점은 GetHashCode 함수의 결과가 가능한 한 고유해야 한다는 것이다. 겹치는 부분이 많을수록 딕셔너리 성능이 저하되고, 딕셔너리 성능이 저하될수록 애플리케이션의 실행이 힘들어지며, 이러한 애플리케이션이 발생시키는 손해가 회사 전체를 힘들게 한다. 결국 고통은 우리의 몫이다. 못 하나가 없어서 나라를 잃는다는 말처럼 때로는 작은 실수가 큰 결과를 초래할 수 있다.

가끔은 고유한 해시 값을 계산하기 위해 클래스의 여러 속성 값을 결합해야 할 때가 있다. 예를 들어 깃허브(GitHub)에서 리포지터리(저장소) 이름은 사용자별로 고유하다. 즉, 모든 사용자는 동일한 이름의 리포지터리를 가질 수 있으며 리포지터리의 이름만으로는 고유한 리포지터리를 선택할 수 없다. 이름만 사용한다고 가정하면 더 많은 충돌이 발생한다. 즉, 해시 값을 결합해야 한다. 마찬가지로 웹 사이트가 주제에 따라 고유한 값을 갖는다면 같은 문제를 겪게 될 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.