나는 해시 테이블 (DotNET 사전 개체)을 스파 스 2 차원 데이터 집합의 일부로 사용하고 있습니다. 해시 테이블에있는 대부분의 항목은 서로 가깝게됩니다. 아마 100 ~ 10,000 개의 항목으로 끝날 것이고, 모두 0에 가깝게 흩어져 있습니다. 해쉬 테이블이 전체 정수 (32 비트) 범위에 퍼져있을 때 해시 테이블이 더 잘 수행된다는 것을 읽었습니다.정수 전체 범위에 매핑
연속 된 정수를 1 : 1 방식으로 크게 다른 값에 매핑하는 저렴한 방법이 있습니까? 나는 그것들을 다시 매핑 할 필요가 없다. 그것은 단지 일방적 인 것이다.
먼저 실제 성능을 저하시키는 사람은 사전을 사용하는 데 문제가되지 않습니다. 실제 킬러는 다중 객체가 동일한 키를 가지고 있지만 사전을 가진 옵션이 아닌 테이블로 끝날 때입니다. 더 중요한 것은 임의의 핵심 가치 집합에 개체를 뿌리지 않는 것입니다. 1,2,3,4와 같은 세트는 잠재적으로 1보다 적은 memmory를 사용합니다. 1024 1089999 2^32-1 –
.NET에서 Dictionary의 성능을 향상 시키려면 충돌 속도와 해싱 속도의 균형을 맞춰야합니다. 충돌없이 완벽한 해시를 가지려면 더 많은 시간이 소요됩니다. 마찬가지로 가장 빠른 해시 알고리즘은 더 많은 충돌을 갖습니다. 균형을 찾는 것이 핵심이며, BCL 팀은 신뢰할 수있는 업무를 수행했을 것입니다. 따라서 성능 문제가없는 한 BCL 팀에 의존하십시오. – nawfal