FlatBuffers es una biblioteca de software libre que implementa un formato de serialización similar a Protocol Buffers , Thrift , Apache Avro , SBE y Cap'n Proto , escrita principalmente por Wouter van Oortmerssen y de código abierto por Google . Admite la deserialización de "copia cero", de modo que el acceso a los datos serializados no requiere copiarlos primero en una parte separada de la memoria. Esto hace que el acceso a los datos en estos formatos sea mucho más rápido que a los datos en formatos que requieren un procesamiento más extenso, como JSON , CSV y, en muchos casos, Protocol Buffers. Sin embargo, en comparación con otros formatos de serialización, el manejo de FlatBuffers requiere generalmente más código y algunas operaciones no son posibles (como algunas operaciones de mutación).
El formato serializado permite el acceso aleatorio a elementos de datos específicos (por ejemplo, propiedades de cadenas individuales o enteros) sin analizar todos los datos. A diferencia de Protocol Buffers, que utiliza enteros de longitud variable , FlatBuffers codifica los enteros en su tamaño nativo, lo que favorece el rendimiento pero da lugar a representaciones codificadas más largas.
FlatBuffers se puede utilizar en software escrito en C++ , C# , C , Go , Java , JavaScript , Kotlin , Lobster, Lua , PHP , Python , Rust , Swift y TypeScript . El compilador de esquemas se ejecuta en Android , Microsoft Windows , macOS y Linux , [3] pero los juegos y otros programas también utilizan FlatBuffers para el trabajo de serialización en muchos otros sistemas operativos, incluidos iOS , Fire OS de Amazon y Windows Phone . [4]
Van Oortmerssen desarrolló originalmente FlatBuffers para el desarrollo de juegos y aplicaciones similares. [5] [1]
Aunque FlatBuffers tiene su propio lenguaje de definición de interfaz para definir los datos que se serializarán con él, también admite esquemas definidos en el formato .proto de Protocol Buffers. [6]
Algunos usuarios destacados de FlatBuffers:
Probamos flatbuffers en todas las principales plataformas móviles (iOS, Android, Amazon Os, Windows Phone) en las que estamos trabajando y funciona bastante bien.
FlatBuffers es una biblioteca de serialización multiplataforma eficiente para C++, C#, C, Go, Java, JavaScript, PHP y Python. Fue creada originalmente en Google para el desarrollo de juegos y otras aplicaciones críticas para el rendimiento.
El tiempo de carga de las historias desde la memoria caché del disco se reduce de 35 ms a 4 ms por historia. Las asignaciones de memoria transitoria se reducen en un 75 por ciento. El tiempo de arranque en frío mejora entre un 10 y un 15 por ciento. Hemos reducido el tamaño de almacenamiento en un 15 por ciento.