티스토리 뷰

Java

HashMap은 hash를 사용함

나야 2009. 4. 26. 20:45
바보짓을 했습니다.

n-gram 모델을 과제로써 구현하던 중에, 문자열->정수를 참조하기 위해 사전구조체를 만들어보자는 것이 처음 아이디어였습니다. (전에 다른 것을 만들때는 HashMap을 사용했었습니다.)

트리로 만들어볼까해서 Depth는 문자열에서 각 문자의 인덱스를 가리키고, 자식노드로 갈 때는 다음 글자에 따라 분기하는.. 대강 그림을 그려보면 다음과 같은...
예를 들어 '나무'라는 단어는 '나마' 노드에 들어가 있고, '무지개'라는 단어는 '마자가'노드에 들어가 있는..

결과는 삽질.
24438개의 단어가 들어 있는 구조체 내부의 모든  단어를 한번씩 참조하는 데 걸린 시간은
HashMap은 10 ms,
제가 구현한 트리 구조체는 107 ms.

일단 HashMap을 사용할 때는 String 클래스의 hashCode() 메소드를 사용하게 되는데, 다음과 같습니다.
코드로 볼 때는 해쉬 코드의 성능을 잘 모르겠으니, 실제로 실험을 해보면, 24438 단어 중에 중복된 해쉬값은 258개였고,  그 해쉬값의 대부분은 2번 정도 중복되었습니다. 어쨌든 상당히 좋은 해쉬코드임은 분명할 것 같습니다.

어쨌든 제가 만든 트리는 속도도 느리고, 메모리도 많이 사용하니..쓸모없네요. ㅎㅎ




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함