해시 테이블 + 선형 탐색 + 캐시?
안녕하세요, 강사님 강의를 잘 듣고 있습니다!
선형 탐색에서 '클러스터링(덩어리 형성) 현상이 생길 수 있음'을 단점으로 언급해주셔서 궁금한 게 생겼습니다.
컴퓨터가 리스트를 읽어올 때 주변 값도 같이 가져와서 캐시 hit으로 성능이 높아진다고 알고 있는데, 그러면 덩어리 형성이 오히려 좋은 효과가 아닌가 싶습니다.
그렇지만 이 점이 충돌이 발생하기가 쉬우며, 고르게 분포가 되어있지 않기 때문에 해시 함수 관점에서는 단점인 것인지 여쭤보고 싶습니다
Câu trả lời 2
1
아..! '인접한 위치에 저장된 데이터가 같이 조회될 확률이 높다'는 지역성 개념이지만,
하지만 해시 테이블에서는 서로 무관한 데이터가 저장되기 때문에 캐시 hit 확률도 낮아지겠군요
그러므로 단지 시간복잡도만 늘리는 함수로, 단점이 크게 작용하게 되는군요!
지역성, 해시함수만큼은 잊지 않을 것 같습니다
상세한 답변 정말 감사합니다!
0
안녕하세요, in hm님!
강의를 주의 깊게 들어주시고 질문까지 해주셔서 감사합니다!
주변의 값을 같이 가져와서 캐시 hit 확률을 높이고 성능을 높이는건 데이터의 시공간 지역성을 기반으로 합니다. 즉 비슷한 위치에 저장된 데이터가 같이 조회될 확률이 높다는 특성을 이용합니다.
해시 테이블의 경우에는 데이터를 저장할 위치, 즉 내부 배열의 인덱스를 결정할 때 해시 함수를 사용하게 됩니다. 데이터(key)에 대한 해시 함수 연산 결과를 인덱스로 사용하게 되는 거죠. 이때 해시 함수는 키 값을 해시 테이블 공간에 최대한 균등하고 무작위적으로 분포시키도록 설계되며 이는 데이터의 논리적인 연관성, 인접성과는 무관하게 독립적인 결과를 반환합니다.
따라서 클러스터링이 형성되었을 때, 물리적으로 인접해있는 데이터들이 논리적으로도 연관이 있다고는 할 수 없습니다. 결론적으로, 물리적으로 인접하게 저장된 데이터들이 캐시의 공간적 지역성 이점을 얻을 만큼 의미 있게 '함께 조회될 확률'을 가지지 않는다는 것입니다. 오히려 선형 탐색의 길이가 길어지는 비효율성으로 인해 O(1)의 평균 접근 속도를 저해한다는 점에서 단점으로 작용합니다.
제 답변이 도움이 되었으면 좋겠습니다. 궁금한 점이 있다면 언제든 편하게 다시 질문해주세요. 감사합니다!
이력서 내용 구성 관련 질문 있습니다.
0
3
1
멀티스레드
0
7
1
재귀 관련
0
16
1
성능 오버헤드
0
16
1
volatile에 대해 질문 있습니다.
1
30
2
SP를 아직도 사용하나요?
0
18
1
replit에서 developer frameworks가 안보여요
0
21
2
실무에서 진행한 쿼리 개선 사례 공유 관련 질문드립니다
1
33
2
Mark and Sweep
1
25
1
GC 알고리즘
1
26
2
용어 질문
1
19
1
연결리스트 삽입삭제 O(1) 아닌가요?
0
19
2
호출횟수 질문입니다.
1
30
2
실행과정 질문입니다.
2
31
1
코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의
0
23
1
태어난김에 세계일주 시간 초과
0
22
1
커리큘럼 중 정렬 관련 질문
0
21
1
코테 사이트 로그인 불가
0
29
1
실습 권한이 없네요··· 이건 ··· 좀··· 401 에러떠요
0
31
3
백준 사이트 서버종료
1
27
0
[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련
0
26
1
수강평 이벤트
0
34
2
part8 Notion 링크
0
31
1
회사의 시스템 아키텍처를 포트폴리오에 써도 되나요?
1
61
2

