Android : 정적 데이터를 저장하기 위해 텍스트 파일 또는 XML 파일을 사용하는 것이 더 효율적입니까?

StackOverflow https://stackoverflow.com/questions/1213882

문제

텍스트 파일 (~ 5MB)에 Mown Android 애플리케이션과 함께 사용하려는 참조 데이터가 있습니다.

파일은 형식입니다.

1|a|This is line 1a
1|b|This is line 1b
2|a|This is line 2a
2|b|This is line 2b
2|c|This is line 2c

내가 알고 싶은 것은 응용 프로그램 내 에서이 파일을 사용하는 가장 효율적인 방법 (메모리, 빠른, 크기 등)입니다.

a.) 파일을 원료 자원으로 저장하고 특정 줄이 필요할 때마다 전체 파일을 열고 읽어야합니다.

b.) 파일을 xml로 변환하고 xpath를 사용하여 값을 찾아야 할 때 파일을 쿼리해야합니까?

<!--sample XML -->
<data>
  <line number="1">
     <entry name="a">This is line 1 a</entry>
  </line>
</data>

c.) 전체 파일을 응용 프로그램의 정적 문자열 배열로 복사하여 붙여 넣어야합니다.

... 다른 제안도 환영합니다.

편집하다또한이 파일을 검색하고 "Line 1A"예를 들어 임의의 키워드로 점프해야합니다.

도움이 되었습니까?

해결책

XML은 항상 간단한 텍스트 나 CSV 파일보다 읽는 데 시간이 더 걸립니다. XML이 트레이드 오프에서 제공하는 것은 데이터를 저장하고 검색하는 고도로 구조화되고 신뢰할 수있는 방법입니다. XML 파일은 위의 예에서 볼 수 있듯이 실제로 포함 된 데이터보다 2-3 배 더 큽니다.

간단한 텍스트 파일에서 "Delimiter"문자에 들어 가지 않을 것이라고 확신한다면, 이는 아마도 파일 속도 관점에서 잘 작동 할 것입니다.

다른 팁

이 질문에 답할 수있는 충분한 정보를 제공하지 않았습니다. 그러나 내가 베팅맨이라면 대답은 아마도 "위의 어느 것도 없다".

이 파일도 검색해야합니다

이것은 무엇을 의미 하는가? 당신은 어떤 문자열 키로 검색하고 있습니까? 정규 표현으로? 라인의 특정 부분이 정수 대 문자열 대 다른 것으로 해석되는 SQL 스타일 쿼리 문자열에 의해? Google 검색 스타일 문자열로?

이러한 각 답변은 아마도이 정보를 저장하기위한 다른 기술을 지시 할 것입니다.

나는 또한 ... 임의의 선으로 점프해야합니다.

왜요? "점프"에 대한 "임의의 선"을 어떻게 결정하고 있습니까 : 키? 줄 번호? 바이트 오프셋? 검색 결과? 다른 것?

물론 다른 질문이 있습니다.

  • 이 데이터는 얼마나 자주 업데이트됩니까?
  • 이 데이터는 어떻게 업데이트됩니까 : 새 버전의 앱은 무엇입니까? 전체 파일을 다운로드 하시겠습니까? deltas/diffs를 다운로드 하시겠습니까? 다른 것?
  • 데이터가 ASCII입니까? UTF-8? 다른 것?

등등.

검색 해야하는 크기는 "SQLITE 데이터베이스 사용"을 암시하지만 다른 답변 중 일부는 해당 솔루션에서 멀어 질 수 있습니다.

매우 적은 양의 데이터에 대해 이야기하는 경우 Android XML 컴파일러는 XML과 같이 액세스 할 수있는 매우 효율적인 이진 표현을 생성 할 수 있습니다. 반면에 데이터가 매우 크고 임의의 쿼리가 필요한 경우 SQLLITE가 성능 (유연성)에서 이길 것으로 기대합니다. 작은 벤치 마크는 글을 쉽게 작성해야하며 관련된 기본 트레이드 오프에 대한 좋은 아이디어를 제공합니다.

플랫 파일은 마지막 옵션 인 IMO이지만 파일이 크지 않으면 작동 할 수 있습니다.

효율성을 (메모리, 빠른, 크기 등)로 정의하면 플랫 또는 구분 된 파일이로드 및 저장하기가 더 빠릅니다.

그러나 사람들은 XML을 사용하여 XML의 유연성과 사용 편의성을 위해 그 속도 중 일부를 기꺼이 교환하기 때문에 XML을 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top