나는 약 400.000 개의 "items"을 가지고있다. 각 "항목"은 16 개의 이중 값으로 구성됩니다.C++ 복잡한 룩업 테이블
런타임에는 항목을 서로 비교해야합니다. 그러므로 나는 그들의 이중 가치를 누그러 뜨리고있다. 이것은 꽤 많은 시간을 필요로합니다.
나는 몇 가지 테스트를 실시했으며, 어떤 항목을 비교해도 상관없이 가능한 반환 값은 40.000에 불과하다는 것을 알았습니다.
런타임시 실제 계산을 수행하지 않고도 이들 값을 쉽게 검색 할 수 있도록이 값을 조회 테이블에 저장하고 싶습니다.
내 질문은 어떻게 효율적으로 조회 테이블에 데이터를 저장하는 것입니다.
문제는 내가 룩업 테이블을 작성하는 경우, 그것은이 같은 예를 들어, 놀라 울 정도로 큰 얻을 수 있다는 것입니다 :
item-id, item-id, compare return value
1 1 499483,49834
1 2 -0.0928
1 3 499483,49834
(...)
그것은 약 1 억 2 천만 조합 요약 것이다. 실제 응용 프로그램에 비해 너무 커 보인다.
하지만 어떻게 피할 수 있을지는 잘 모르겠습니다.
누구든지 멋진 아이디어를 공유 할 수 있습니까?
대단히 감사합니다!
"나는 그들의 이중 값을 합치고있다"는 것은 무엇을 의미합니까? 조회가 느린다고 말하는거야? unordered_map의 문제점은 무엇입니까? – doctorlove
파일에서 double 값을로드하는 것은 이미 느린 속도입니다. 결국 계산이 끝나게되었습니다. – tmighty
그래서, 당신은'typedef double [16] item'과 같은 것을 가지고 있고'item a, b, c; for (int i = 0; i <16; i ++) {c [i] = a [i] * b [i];}'이 곱셈은 너무 느리다. 당신의 목표는'c'에 저장된 결과를보다 효율적으로 얻는 것입니다. 그게 다 맞습니까? –