2013-05-01 5 views
0

나는 (키, 값) 약 3000 쌍이 있습니다. 그들은 고정되어 영원히 바뀌지 않을 것입니다. 내 응용 프로그램에는 약 200 개의 쿼리를 작성해야하는 페이지가 있습니다. 각 쿼리에 대해 키를 가져 와서 값을 요청합니다. 또한 순차적입니다. "값 1"을 얻기 위해 쿼리 1을 끝내야합니다. 그러면 쿼리 2가 "값 2"를 얻는 데 필요한 키를 알고 있습니다.android : 키 값 쌍을 효율적으로 쿼리하는 방법

SQLite로 구현하려고했습니다. 나는 시간을 측정했는데 이것이 매우 느리다는 것을 알았습니다. 약 600ms가 걸렸습니다. 그것을 구현하는 더 좋은 방법이 있다면 궁금해? 예를 들어, 3000 크기의 문자열 배열? 또는 다른 해시 맵? 충고에 감사하다.

편집 : 키와 값의 크기, 키의 크기 : 2char (유니 코드), 값 : 4 ~ 6char를 언급하는 것을 잊어 버리십시오. 실제로는 조회 언어 사전과 유사합니다.

답변

0

이 답변은이 컨테이너에 넣어야하는 데이터의 양에 달려 있습니까? 예 : 5 바이트의 3000 쌍 : 메모리에 그 데이터를 유지하는 문제 없음; 그러나 350 쌍의 3000 쌍 : 이미 약 1MB입니다.

데이터 양이 비교적 적은 경우 정적 인 SparseArray을 처음에는 SQL 쿼리 나 코드의 할당으로 채우는 것에 대해 생각할 수 있습니다. SparseArrayHashTable보다 효율적입니다.

키가 정수가 아니면 HashTable은 SQL 쿼리보다 훨씬 빠릅니다.

데이터 세트가 상당히 큰 경우 LruCache을 사용할 수 있습니다.

+1

해시 테이블에 대해 알려 주셔서 감사합니다. 해시 테이블을 사용하여 100ms 미만입니다. 많이 개선되었습니다! 감사 – manhon

관련 문제