FlatBuffers — это бесплатная программная библиотека, реализующая формат сериализации, аналогичный Protocol Buffers , Thrift , Apache Avro , SBE и Cap'n Proto , изначально написанная Воутером ван Оортмерссеном и открытая Google . Она поддерживает десериализацию «с нулевой копией», так что доступ к сериализованным данным не требует предварительного копирования их в отдельную часть памяти. Это делает доступ к данным в этих форматах намного быстрее, чем к данным в форматах, требующих более обширной обработки, таких как JSON , CSV и во многих случаях Protocol Buffers. Однако по сравнению с другими форматами сериализации обработка FlatBuffers обычно требует большего количества кода, и некоторые операции невозможны (например, некоторые операции мутации).
Сериализованный формат позволяет осуществлять произвольный доступ к определенным элементам данных (например, к отдельным строковым или целочисленным свойствам) без разбора всех данных. В отличие от Protocol Buffers, который использует целые числа переменной длины , FlatBuffers кодирует целые числа в их собственном размере, что повышает производительность, но приводит к более длинным закодированным представлениям.
FlatBuffers можно использовать в программном обеспечении, написанном на C++ , C# , C , Go , Java , JavaScript , Kotlin , Lobster, Lua , PHP , Python , Rust , Swift и TypeScript . Компилятор схемы работает на Android , Microsoft Windows , macOS и Linux , [3] но игры и другие программы используют FlatBuffers для сериализации и во многих других операционных системах, включая iOS , Fire OS от Amazon и Windows Phone . [4]
Ван Оортмерссен изначально разработал FlatBuffers для разработки игр и подобных приложений. [5] [1]
Хотя FlatBuffers имеет собственный язык определения интерфейса для определения данных, которые будут сериализованы с его помощью, он также поддерживает схемы, определенные в формате Protocol Buffers .proto. [6]
Некоторые известные пользователи FlatBuffers:
Мы протестировали flatbuffers [sic] на всех основных мобильных платформах (iOS, Android, Amazon Os [sic], Windows Phone), на которых мы работаем[,], и они работают довольно хорошо.
FlatBuffers — эффективная кроссплатформенная библиотека сериализации для C++, C#, C, Go, Java, JavaScript, PHP и Python. Первоначально она была создана в Google для разработки игр и других приложений, критичных к производительности.
Время загрузки истории из кэша диска сокращено с 35 мс до 4 мс на историю. Временное выделение памяти сокращено на 75 процентов. Время холодного старта улучшено на 10-15 процентов. Мы уменьшили размер хранилища на 15 процентов.