일부 많은 문자열 (즉, 100 만개)에 대해 double 유형 점수를 계산하고 있다고 가정하고 계산 한 것을 다시 사용하기 위해 일종의 캐싱 효과를 갖고 싶습니다. 지금까지는 필요할 때마다. 자, 현명한 방법은 메모리 사용량을 줄이기 위해 빈번한 문자열과 점수를 맵에 저장하는 것입니다. 이 표준 솔루션이 있습니까?C++에서지도에 빈번한 키 저장하기
0
A
답변
0
블룸지도 또는 HashMaps을
당신은 문자열의 수백만 100의 그들 모두는 디스크에 수도가 아니라는 것을 언급 나는이 가정입니다 함께 필터. 다음과 같이
은 무엇 내가 제안하는 것은 두 개의 레이어 계층 구조입니다 :
은 다음과 같은 형식이다 해시 맵을 작성
std::map<std::string, double> map;
이 지난 500 개 참조 항목을 포함 할 수있다. 지도를 사용하는 경우 TTL을 기반으로 퇴거 정책을 사용할 수 있습니다. 당신이 가장 최근에 사용 된 기반으로 퇴거 정책을 원하는 경우
, 당신은 약간 복잡해질 것이다 약간에게 자료 구조를
std::map<std::string, cached_data> map;
struct cached_data
{
double value;
int times_accessed; //Number of times it has been accessed.
}
삽입을 조정할 수있을 것이다.
이제 캐시 액세스가 실패 할 때 수행해야 할 작업이 있습니다. 실제로 데이터가 없으면 불필요하게 디스크를 읽지 않으려합니다. 그 때문에 bloomfilter를 사용할 수 있습니다. 블룸 필터는 데이터가있을 확률을 알려 주어 디스크 읽기를 방지합니다.
키 -> 디스크 주소 매핑으로 구성된 인덱스를 사용하여 정렬 된 방식으로 많은 양의 문자열을 디스크에 제안 해 보겠습니다. 크게 카산드라
관련 문제
- 1. 힙이 빈번한 빈번한 전체 GC
- 2. Perl Windows 환경 키 저장하기
- 3. 저장하기 전에 속성 키 보간
- 4. 빈번한 HttphostConnectException
- 5. iOS의 키 체인에 이메일/비밀번호 저장하기
- 6. 빈번한 sdcard 쓰기의 영향
- 7. 빈번한 http 요청
- 8. 캐시의 빈번한 동시성
- 9. 빈번한 couchbase 문서 업데이트
- 10. SPARQL 가장 빈번한 술어
- 11. 빈번한 잠금 방지
- 12. 빈번한 코드 제거
- 13. 빈번한 데이터베이스 연결을 피하십시오.
- 14. 빈번한 데이터베이스 업데이트
- 15. 배열의 가장 빈번한 요소
- 16. 빈번한 Itemset 마이닝 성능
- 17. 빈번한 넷빈즈가 얼어 붙습니다
- 18. 빈번한 배포와 분기 유지
- 19. 활동 간의 빈번한 통신
- 20. Memcache - 빈번한 캐시 재 구축을 방지하는 방법?
- 21. 빈번한 DELETE 후에 인덱스 재구성/재구성이 필요합니까?
- 22. 가장 빈번한 휴대폰 해상도는 무엇입니까?
- 23. 숫자의 가장 빈번한 조합 찾기
- 24. 반환 가장 빈번한 선두로부터 (들)
- 25. 빈번한 수업 처리 방법은 무엇입니까?
- 26. 가장 빈번한 항목 집합 찾기
- 27. 빈번한 항목 필터 사용 루비
- 28. 빈번한 ZooKeeper CONNECTIONLOSS 이벤트가 있습니까?
- 29. jaxb에서 빈번한 스키마 변경 처리
- 30. 배열의 배열의 가장 빈번한 배열
에서 영감을
대답 표준 : map''''한 번 봐, 당신이 키와''double'' 등으로''표준 : string''를 사용할 수있는 연관 배열이다 값. – NikolayKondratyev
캐시가 바운드없이 커지거나 LRU 솔루션을 더 많이 찾고 있습니까 (즉, 캐시가 지정된 최대 크기에 도달 한 후 최근에 사용되지 않은 캐시 항목이 그것보다 큰 성장에서) –
@ JeremyFriesner 방금 언급 한 것, LRU 솔루션, 내가 뭘 찾고있는 것처럼 들리 네. – user3639557