Плоские буферы
Оригинальный автор(ы) | Воутер ван Оортмерссен |
---|---|
Разработчик(и) | Дерек Бэйли |
Первоначальный выпуск | 17 июня 2014 г [1] |
Стабильная версия | 24.3.25 [2] ![]() |
Репозиторий | |
Написано в | С++ |
Операционная система | Android , Microsoft Windows , Mac OS X , Linux |
Тип | формат и библиотека сериализации, IDL компилятор |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | flatbuffers.dev |
FlatBuffers — это бесплатного программного обеспечения, библиотека реализующая формат сериализации , аналогичный Protocol Buffers , Thrift , Apache Avro , SBE и Cap'n Proto , изначально написанная Воутером ван Оортмерсеном и имеющая открытый исходный код Google . Он поддерживает десериализацию с нулевым копированием, поэтому для доступа к сериализованным данным не требуется сначала копировать их в отдельную часть памяти. Это делает доступ к данным в этих форматах намного быстрее, чем к данным в форматах, требующих более тщательной обработки, таких как JSON , CSV и во многих случаях буферы протокола. Однако по сравнению с другими форматами сериализации обработка FlatBuffers обычно требует больше кода, а некоторые операции невозможны (например, некоторые операции мутации).
Сериализованный формат обеспечивает произвольный доступ к определенным элементам данных (например, отдельным строковым или целочисленным свойствам) без анализа всех данных. В отличие от протокольных буферов, в которых используются целые числа переменной длины , FlatBuffers кодирует целые числа в их собственном размере, что повышает производительность, но приводит к более длинным закодированным представлениям.
FlatBuffers можно использовать в программном обеспечении, написанном на C++ , C# , C , Go , Java , JavaScript , Kotlin , Lobster, Lua , PHP , Python , Rust , Swift и TypeScript . Компилятор схемы работает на Android , Microsoft Windows , macOS и Linux . [3] но игры и другие программы используют FlatBuffers для сериализации и во многих других операционных системах, включая , Amazon Fire iOS OS и Windows Phone . [4]
Ван Оортмерссен изначально разработал FlatBuffers для разработки игр и подобных приложений. [5] [1]
Хотя FlatBuffers имеет собственный язык определения интерфейса для определения сериализуемых с его помощью данных, он также поддерживает схемы, определенные в формате Protocol Buffers .proto. [6]
Пользователи [ править ]
Некоторые известные пользователи FlatBuffers:
- Cocos2d-x , популярная бесплатная библиотека программирования 2D-игр, использует FlatBuffers для сериализации всех своих игровых данных. [7]
- Facebook Android-клиент использует FlatBuffers для дискового хранения и связи с серверами Facebook. Используемый ранее формат JSON работал плохо. [8]
См. также [ править ]
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б Воутер ван Оортмерссен (17 июня 2014 г.). «FlatBuffers: библиотека сериализации с эффективным использованием памяти» . Проверено 15 июня 2017 г.
- ^ «Релиз 24.3.25» . 26 марта 2024 г. Проверено 23 апреля 2024 г.
- ^ «GitHub — google/ Flatbuffers: Библиотека сериализации с эффективным использованием памяти» . Гитхаб . Проверено 10 декабря 2020 г.
- ^ «FlatBuffers для Unity» . eXiin. 21 сентября 2015 г. Проверено 15 июня 2017 г.
Мы протестировали плоские буферы [так в оригинале] на всех основных мобильных платформах (iOS, Android, Amazon Os [так в оригинале], Windows Phone), на которых мы создаем[,], и они работают довольно хорошо.
- ^ «Документация FlatBuffers» . Проверено 21 июня 2017 г.
FlatBuffers — это эффективная кроссплатформенная библиотека сериализации для C++, C#, C, Go, Java, JavaScript, PHP и Python. Первоначально он был создан в Google для разработки игр и других приложений, критически важных для производительности.
- ^ Кентон Варда (17 июня 2014 г.). «Cap'n Proto, FlatBuffers и SBE» . Проверено 15 июня 2017 г.
- ^ «Cocos2d-x: Справочник по пространству имен Flatbuffers» .
- ^ Джордж Се (31 июля 2015 г.). «Улучшение производительности Facebook на Android с помощью FlatBuffers» . Проверено 15 июня 2017 г.
Время загрузки истории из дискового кэша уменьшено с 35 мс до 4 мс на историю. Временное выделение памяти сокращается на 75 процентов. Время холодного старта сокращается на 10-15 процентов. Мы уменьшили размер хранилища на 15 процентов.