Flatbuffer

Flatbuffer
Originalautor (en) Wouter Van Oortmerssen
Erstveröffentlichung 17. Juni 2014; Vor 8 Jahren[1]
Stabile Version
2.0.6 / 15. Februar 2022; vor 5 Monaten[2]
Repository
Geschrieben in C ++
Betriebssystem Android, Microsoft Windows, Mac OS X, Linux
Typ Serialisierungsformat und Bibliothek, Idl Compiler
Lizenz Apache -Lizenz 2.0
Webseite Google.Github.io/Flatbuffer/ Edit this on Wikidata

Flatbuffer ist ein gratis Software Bibliothek Implementierung a Serialisierung Format ähnlich wie Protokollpuffer, Sparsamkeit, Apache Avro, Sbe, und Cap'n Proto, hauptsächlich von Wouter van Oortmerssen geschrieben und von offener Quellen von Google. Es unterstützt die Deserialisierung der „Zero-Kopie“, so dass der Zugriff auf die serialisierten Daten nicht zuerst in einen separaten Teil des Speichers kopiert werden muss. Dies macht den Zugriff auf Daten in diesen Formaten viel schneller als Daten in Formaten, die eine umfassendere Verarbeitung erfordern, wie z. JSON, CSVund in vielen Fällen Protokollpuffer. Im Vergleich zu anderen Serialisierungsformaten erfordert der Umgang mit FlatBuffer jedoch normalerweise mehr Code, und einige Operationen sind nicht möglich (wie einige Mutationsoperationen).

Das Serialisiertes Format erlaubt Zufallszugriff zu spezifischen Datenelementen (z. B. einzelne Zeichenfolge oder Ganzzahleigenschaften) ohne Analyse aller Daten. Im Gegensatz zu Protokollpuffern, die verwendet Variable Länge Ganzzahlen, Flatbuffers codiert Ganzzahlen in ihrer nativen Größe, was die Leistung begünstigt, aber zu länger codierten Darstellungen führt.

Flatbuffers können in Software verwendet werden in geschrieben C ++, C#, C, gehen, Java, JavaScript, Kotlin, Hummer, Lua, Php, Python, Rost, Schnell, und Typoskript. Der Schema Compiler läuft weiter Android, Microsoft Windows, Mac OS X, und Linux,[3] Spiele und andere Programme verwenden jedoch auch Flatbuffers für die Serialisierungsarbeit in vielen anderen Betriebssystemen, einschließlich iOS, Amazonas's Feuer os, und Windows Phone.[4]

Van Oortmerssen entwickelte ursprünglich Flatbuffers für die Spieleentwicklung und ähnliche Anwendungen.[5][1]

Obwohl FlatBuffer seine eigene hat Schnittstellendefinitionssprache Um die Daten zu definieren, die damit serialisiert werden sollen, unterstützt sie auch Schemata, die im Protokollpuffer definiert sind. Proto -Format.[6]

Benutzer

Einige bemerkenswerte Benutzer von Flatbuffers:

  • Cocos2d-xDie beliebte 2-D-Game-Programmierbibliothek mit freiem Software verwendet FlatBuffers, um alle Spieldaten zu serialisieren.[7]
  • Facebook Android Client verwendet Flatbuffers für die Speicherung und Kommunikation mit Facebook -Servern. Das zuvor verwendete JSON -Format leistete schlecht.[8]

Siehe auch

Verweise

  1. ^ a b Wouter Van Oortmerssen (2014-06-17). "FlatBuffer: Eine speichereffiziente Serialisierungsbibliothek". Abgerufen 2017-06-15.
  2. ^ "Release v2.0.6 - Google/FlatBuffer". Abgerufen 25. April 2022 - über Github.
  3. ^ "GitHub - Google/FlatBuffer: Speichereffiziente Serialisierungsbibliothek". Github. Abgerufen 2020-12-10.
  4. ^ "Flatbuffer für Einheit". Exiin. 2015-09-21. Abgerufen 2017-06-15. Wir haben FlatBuffers [SIC] auf allen wichtigen mobilen Plattformen (iOS, Android, Amazon OS [SIC], Windows Phone) getestet, auf denen wir [,] bauen, und es funktioniert ziemlich gut.
  5. ^ "Flatbuffers Dokumentation". Abgerufen 2017-06-21. Flatbuffers ist eine effiziente Cross -Plattform -Serialisierungsbibliothek für C ++, C#, C, GO, Java, JavaScript, PHP und Python. Es wurde ursprünglich bei Google für Spielentwicklung und andere leistungskritische Anwendungen erstellt.
  6. ^ Kenton Varda (2014-06-17). "Cap'n Proto, Flatbuffer und SBE". Abgerufen 2017-06-15.
  7. ^ http://www.cocos2d-x.org/reference/native-cpp/v3.5/d7/d2d/namespaceflatbuffer.html
  8. ^ George Xie (2015-07-31). "Verbesserung der Leistung von Facebook auf Android mit Flatbuffers". Abgerufen 2017-06-15. Die Ladezeit der Geschichte von Disk Cache wird von 35 ms auf 4 ms pro Geschichte reduziert. Transient -Speicherzuweisungen werden um 75 Prozent reduziert. Die Kaltstartzeit wird um 10-15 Prozent verbessert. Wir haben die Speichergröße um 15 Prozent reduziert.