Android: ¿Es más eficiente usar un archivo de texto o un archivo XML para almacenar datos estáticos
Tengo algunos datos de referencia en un archivo de texto (~ 5 MB) que quiero usar con la aplicación Android podría.
El archivo es del formato:
- Haciendo clic en un botón para cambiar el idioma
- Lectura de un archivo XML desde recursos
- Texto con formas en recurso dibujable
- Si se proporciona un recurso dibujable para ldpi, mdpi, hdpi, xhdpi, este dibujable no necesita proporcionarse para nodpi?
- Android - ¿Cómo descargar una imagen y usarla como nuevo recurso?
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
Lo que quiero saber es la forma más eficiente (menos memoria, rápido, tamaño, etc) para utilizar este archivo dentro de mi aplicación.
a.) Debo guardar el archivo como un recurso sin formato y abrir y leer todo el archivo siempre que necesite una cierta línea.
b.) Debo convertir el archivo a XML y utilizar XPath para consultar el archivo cuando sea necesario buscar un valor
<!--sample XML --> <data> <line number="1"> <entry name="a">This is line 1 a</entry> </line> </data>
c.) Debo copiar y pegar todo el archivo como una matriz de cadena estática en la aplicación y utilizarlo.
… cualquier otra sugerencia es bienvenida.
[EDITAR] También necesitaré buscar en este archivo y saltar a palabras clave arbitrarias, por ejemplo, "línea 1a".
- Iconos de prioridad en la barra de acción
- Cómo acceder a los recursos en un proyecto de biblioteca de Android
- Crashing debido a "No identificador de paquete al obtener el valor del número de recurso ..."
- Configuración de android: versionName como referencia a cadena de recursos lleva a NullPointerException en el emulador
- Android encontrar recurso por id durante el tiempo de ejecución
- Crujido / embalaje de recursos con aapt en hormigas construir utiliza caché de otros proyectos
- Resources.ap_ no existe cuando compile mi proyecto android
- Recursos de Android que convierten a string Warning TypedValue
XML siempre tomará más tiempo para leer que los archivos de texto simple o CSV. Lo que XML le da en el tradeoff es una forma altamente estructurada y confiable de almacenar y recuperar datos. Los archivos XML son, como se puede ver en los ejemplos anteriores, una buena 2-3 veces mayor que los datos que realmente contienen.
Si estás seguro de que nunca vas a ejecutar en el "delimitador" carácter en su archivo de texto simple, entonces que probablemente funcionaría bien, puramente desde una perspectiva de velocidad de archivo.
No ha proporcionado suficiente información para responder a esta pregunta. Sin embargo, si yo fuera un hombre de apuestas, la respuesta es probablemente "ninguna de las anteriores".
También necesitaré buscar en este archivo
¿Qué significa esto? Usted está buscando con una clave de cadena? ¿Por alguna expresión regular? Por una cadena de consulta de estilo SQL donde ciertas porciones de una línea se interpretan como enteros versus cadenas versus algo más? ¿Por una cadena de estilo de búsqueda de Google?
Cada una de esas respuestas probablemente dicte una tecnología diferente para almacenar esta información.
También necesitaré … saltar a líneas arbitrarias.
¿Por qué? ¿Cómo determinas cuáles "líneas arbitrarias" estás "saltando" a: clave? ¿número de línea? byte offset? ¿Resultados de la búsqueda? ¿algo más?
Y, por supuesto, hay otras preguntas, como:
- ¿Con qué frecuencia se actualizan estos datos?
- ¿Cómo se actualizan estos datos: nueva versión de la aplicación? descargar el archivo completo? descargar deltas / diffs? ¿algo más?
- ¿Los datos ASCII? UTF-8? ¿Algo más?
y así.
Algo que el tamaño que debe ser buscado sugiere "utilizar una base de datos SQLite", pero algunas de las otras respuestas podrían alejarse de esa solución.
Si usted está hablando de cantidades muy pequeñas de datos, el compilador de Android XML puede producir representaciones binarias muy eficaces para usted que puede acceder como XML. Por otro lado, si los datos son muy grandes en absoluto, y necesita consultas arbitrarias, esperaría SQLlite para ganar en el rendimiento (así como la flexibilidad). Un pequeño punto de referencia debe ser fácil de escribir y le daría una buena idea en cuanto a los compromisos básicos involucrados.
Flat-files sería una última opción, imo, pero podría funcionar si el archivo no es muy grande.
Si define la eficiencia como (menos memoria, rápido, tamaño etc.), un archivo plano o delimitado será más rápido para cargar y guardar.
Sin embargo, la gente usa XML porque está dispuesta a intercambiar algo de esa velocidad por la mayor flexibilidad y facilidad de uso de XML.
- No se puede identificar los contactos de WhatsApp
- OutOfMemoryError: Usando una imagen que es 1080 * 1920 haga la página de bienvenida