¿Pueden los FlatBuffers desarrollados para Android reemplazar a JSON?
Quizás te preguntes: Dado que ya tenemos JSON, GSON y Jackson estándar, ¿por qué necesitamos usar nuevas herramientas?
También puedes probar FlatBuffers, que enviará mucho más rápido que JSON.
¿Qué es un buffer para tabletas?
FlatBuffers es una biblioteca estandarizada multiplataforma para C, C#, C, Go, Java, JavaScript, PHP y Python. Fueron creados originalmente por Google para desarrollar juegos y otros programas que requieren un alto rendimiento.
¿Por qué utilizar latBuffers?
Los datos serializados se pueden usar sin descomponerlos ni desempaquetarlos. La característica más importante de FlatBuffers es que puede representar datos jerárquicos en un búfer de archivos binarios, es decir, se puede usar sin descomponerlos ni desempaquetarlos, y también admite Modo de datos Evolution (admite avance y retroceso).
Eficiencia y velocidad de la memoria: la única memoria necesaria para obtener los datos es la memoria intermedia. No requiere ninguna asignación de memoria adicional (al menos no en C). Otros idiomas pueden diferir).
FlatBuffers también funciona con mmap, donde solo se almacena en el búfer una parte de la memoria. El uso de datos es casi tan rápido como el esquema original y solo requiere una dirección indirecta adicional para permitir la evolución del formato y los campos no obligatorios.
FlatBuffers están dirigidos a proyectos que consumen mucho tiempo y espacio (mucha, mucha asignación de memoria). Permite que estos proyectos utilicen o construyan datos de números de serie no deseados, como FlatBuffers que pueden usarse en juegos u otras aplicaciones que requieren alto rendimiento.
Flexibilidad: tener campos no obligatorios no solo significa que obtienes excelentes capacidades de avance y retroceso (muy importante en juegos donde no necesitas actualizar todos los datos con cada nueva versión), sino que también significa que tiene más opciones para escribir y descartar datos, y también tiene más opciones para diseñar estructuras de datos.
Bajos requisitos de codificación: el búfer plano requiere solo una pequeña cantidad de código, con un único subtítulo como dependencia mínima que es muy fácil de implementar.
Fácil de escribir: cuando se usa, los errores se pueden reflejar durante la fase de escritura sin la necesidad de reescribir el código o realizar comprobaciones en tiempo de ejecución. También genera algún código útil para usted.
Fácil de usar: el código C que genera es de fácil acceso y se puede utilizar para código estructurado. También tiene una función opcional para descomponer patrones y una función de expresión de texto similar a JSON que opera eficientemente en tiempo de ejecución (más rápido y con mayor eficiencia de memoria que el descomponedor JSON).
Multiplataforma, independiente: el código C es compatible con cualquier gcc/clang reciente y VS2010. También tiene un archivo de compilación incorporado (archivo android.mk y archivo cmake que admite todas las demás plataformas) para pruebas y ejemplos.
¿Quién usa buffers para tabletas?
BobbleApp es la aplicación de stickers más popular de la India. En el proceso de uso de FlatBuffers, mejoran enormemente el rendimiento de la aplicación. Cocos2d-x es el motor de juegos móviles de código abierto número uno y también utilizan Cocos2d-x para serializar datos de juegos.
FlatBuffers también lo utiliza Facebook, que utiliza para crear funciones de comunicación de servicio al cliente en aplicaciones de Android. Una vez publicaron un artículo sobre cómo les ayudaron los parachoques de losa.
Fun Propulsion Labs de Google utiliza FlatBuffers, que se utilizan ampliamente en el desarrollo de bibliotecas y juegos.
¿Cuánto ha mejorado el rendimiento de las aplicaciones?
En términos de velocidad de descomposición, se necesitan 35 milisegundos para procesar 20 KB de datos en JSON, lo que excede el intervalo de actualización del cuadro de la interfaz de usuario (16,6 milisegundos).
Cuando se usa JSON, no puede brindar una experiencia de aplicación fluida a los usuarios y se sentirán retrasos obvios al desplazarse por la interfaz de usuario.
Desglosando el aspecto de inicialización. El analizador JSON necesita establecer un mapeo de campos antes de la descomposición, lo que generalmente demora entre 100 y 200 ms. Esto extenderá significativamente el tiempo de inicio de la aplicación.
En términos de recolección de basura, se generará una gran cantidad de objetos pequeños durante el proceso de descomposición JSON. Descubrimos que cuando JSON descompone 20 KB de datos, es necesario asignar 100 KB de espacio de memoria, lo que ejerce mucha presión sobre el recolector de basura de Java.
FlatBuffer vs JSON
Yo
Hice un experimento de este tipo, usando FlatBuffer y JSON para descomponer un archivo de 4 MB respectivamente. FlatBuffer tarda entre 1 y 5 milisegundos, mientras que JSON tarda 2000 milisegundos.
Cuando se usa FlatBuffer, la aplicación no necesita llamar a GC; cuando se usa JSON, necesita llamar a GC varias veces. Entonces solo puedo aplicar la congelación de la interfaz de usuario cuando trabajo con JSON.
Elija que JSON se descomponga en segundo plano.