2009-07-31 2 views
3

안드로이드 응용 프로그램과 함께 사용하려는 텍스트 파일 (~ 5MB)에 참조 데이터가 있습니다.Android : 정적 데이터를 저장하기 위해 텍스트 파일이나 XML 파일을 사용하는 것이 더 효율적입니까

파일은 형식이다 :

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 

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

). 파일을 원시 리소스로 저장하고 특정 줄이 필요할 때마다 전체 파일을 열고 읽어야합니까?

이 나.) 나는 XML로 파일을 변환하고 내가 값을

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

C를 볼 필요가 그 어느 때 파일을 조회 할 수 XPath를 사용해야합니다.) 난 그냥 &가 아니라 전체 파일을 붙여 복사해야 응용 프로그램의 정적 문자열 배열을 사용합니다.

... 다른 의견을 환영합니다.

[편집] 이 파일을 검색하고 임의의 키워드로 이동해야합니다. "라인 1a".

답변

3

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

간단한 텍스트 파일에서 "구분 기호"문자를 사용하지 않는다고 확신하는 경우 파일 속도 관점에서만 문제가 없을 것입니다.

+1

xml이 비효율적이라는 가정은 Android 플랫폼에서 크게 유효하지 않습니다. 아마도 그는 안드로이드 리소스 컴파일러를 사용하여 이것을 XML의 (매우 효율적인) 안드로이드 전용 바이너리 표현으로 컴파일 할 것이다. – jsight

0

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

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

3

이 질문에 답변하기에 충분한 정보를 제공하지 않았습니다. 그러나, 내가 도박을하는 사람 이었다면, 그 대답은 아마 "위의 것"이 아닐 것입니다.

나는이 무슨 뜻이 파일

를 검색해야합니다

? 어떤 문자열 키로 검색하고 있습니까? 정규 표현식으로? SQL 스타일의 쿼리 문자열에 의해 행의 특정 부분이 문자열 대 정수 대 다른 문자열로 해석됩니까? Google 검색 스타일 문자열?

이러한 답변은 아마도이 정보를 저장하는 데 다른 기술을 요구할 것입니다.

또한 임의의 줄로 이동해야합니다.

왜? 당신이 "점프"하는 "임의의 선들"을 어떻게 결정하고 있습니까? 줄 번호? 바이트 오프셋? 검색 결과? 다른 것?

  • 가 얼마나 자주이 데이터가 업데이트됩니다

    는 그리고, 물론, 같은 다른 질문이 있습니까?

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

등등.

검색해야하는 크기는 "SQLite 데이터베이스 사용"을 제안하지만 일부 다른 대답은 해당 솔루션에서 벗어날 수 있습니다.

+0

거의 업데이트되지 않는 참조 파일 일뿐입니다. – Tawani

+0

". 임의의 줄로 건너 뛰기"(예 : "15 | e" – Tawani

1

매우 적은 양의 데이터에 대해 이야기하는 경우 Android XML 컴파일러는 XML과 마찬가지로 액세스 할 수있는 매우 효율적인 2 진 표현을 생성 할 수 있습니다. 반면에 데이터가 매우 크고 임의의 쿼리가 필요하다면 SQLlite가 성능 (유연성뿐 아니라)에서 이기기를 기대합니다. 작은 벤치 마크는 작성하기 쉬워야하며 관련된 기본적인 상충 관계에 대해 좋은 아이디어를 줄 것입니다.

플랫 파일은 마지막 옵션이 될 수 있지만 파일이 너무 크지 않은 경우 작동 할 수 있습니다.

+0

큰 데이터에 대해서도 sqlite를 사용할 것입니다! Sqlite에서 데이터를 쉽게 인덱싱 할 수 있습니다. – tuinstoel