키를 둘 위치를 선택할 수 있습니다.사전 <int, Dictionary <int, int>>을 구현하고 있습니까?
Dictionary<key1, Dictionary<key2, int>>
Dictionary<key2, Dictionary<key1, int>>
키 1 일 내가 최고 속도를 얻기 위해 구현해야
키 2
보다 작은 32 배속 경우?상관 없습니까?
구현하는 더 좋은 방법은 무엇입니까?
키를 둘 위치를 선택할 수 있습니다.사전 <int, Dictionary <int, int>>을 구현하고 있습니까?
Dictionary<key1, Dictionary<key2, int>>
Dictionary<key2, Dictionary<key1, int>>
키 1 일 내가 최고 속도를 얻기 위해 구현해야
키 2
보다 작은 32 배속 경우?상관 없습니까?
구현하는 더 좋은 방법은 무엇입니까?
주위를 노는 후 나는이 해결책으로 갔다.
int[,][] myDict;
대신
Dictionary<int, Dictionary<int, int>> myDict;
의
또는 두 키
그래서 당신의 키는 인접한 'int'입니다. 당신은 그렇게 말하지 않았습니다. 그리고 32x 크기의 차이점과 어떻게 비슷한가? –
@HenkHolterman, 그들은 인접하지 않지만 패턴, enum 플래그가 있습니다. 내 솔루션에는 메모리 비용이 있지만 중요한 것은 속도입니다.이 경우에는 이길 수 있습니다. – Fredou
아마 당신은 복합 키를 구현하여 최상의 성능을 얻을 :
struct Key { key1; key2; }
이 Equals
과에 대한 GetHashCode
(더 나은 아직 IEquatable<Key>
인터페이스)를 구현합니다.
이 패턴을 사용하면 하나의 사전과 하나의 해시 검색 만 필요합니다.
에 대한 튜플 또는 구조체는 무엇을 구현하는 방법? 너 뭐하려고? – spender
두 가지 방법으로 시도하고 측정하십시오. :) – verdesmarald
@spender, 2 개의 키가 필요한 빠른 검색 사전 구현 – Fredou