Mit Superpack kann Facebook seine Android-Apps um rund 20 Prozent kleiner packen als bisher. Möglich macht das Compiler-Technik.

Das Engineering-Team von Facebook beschreibt in einem aktuellen Blogeintrag mit Superpack eine neue Kompressionstechnik, die das Unternehmen bereits intern einsetzt. Dank neuartiger Methoden sollen die Android-Apps des Konzerns damit rund 20 Prozent kleiner sein als die standardmäßig genutzte Zip-Komprimierung.
Um diese auch im Vergleich zu anderen bisherigen Kompressionstechniken deutliche Steigerung zu erreichen, setzt Facebook unter anderem auf eine neuartige Idee, die Compiler-Technik mit modernen Kompressionstechniken kombiniert. Grundlage der Idee ist außerdem die Kolmogorow-Komplexität, wonach ein Programm, das Daten erzeugt, kleiner sein kann als die Auflistung der Daten selbst.
Dazu heißt es in dem Blog: "Die Formalisierung der Komprimierung als generativer Prozess, der kleine Programme erzeugt, bietet erhebliche Vorteile. Es gibt dem Datenkompressionsentwickler Zugriff auf eine Fundgrube ausgereifter Compiler-Tools und -Techniken, die bis zum Ende der Datenkompression wiederverwendet werden können". Dazu gehören das Parsen, Code-Erzeugung oder auch SMT-Solver.
Compiler-Technik zur Kompression
Wie erwähnt kombiniert Facebook dies mit bestehenden Kompressionstechniken: "Die Effektivität von Superpack liegt in seiner Fähigkeit, diese Compiler-Techniken mit denen zu verbinden, die in der Mainstream-Datenkomprimierung verwendet werden. Semantisches Wissen aus dem Compiler-Teil von Superpack führt zu einem verbesserten LZ-Parsing (dem Komprimierungsschritt, der Redundanz eliminiert) sowie zu einer verbesserten Entropiecodierung (der Schritt, der kurze Codes für häufige Informationen erzeugt)".
Beim LZ-Parsing werden von Superpack Daten etwa auf Grundlage des AST (Abstract Syntax Tree) gruppiert. Für die Entropiecodierung setzt Superpack auf Asymmetric Numeral Systems (ANS), das Facebook etwa bereits in Zstandard nutzt. Auch hierfür setzt Facebook wiederum auf Informationen über die Datenstruktur aus der Compiler-Analyse.
Für unstrukturierte Daten setzt Facebook auf eine weitere Technik: "Superpack versucht, den Werten Struktur zu verleihen, indem es sie zum Zeitpunkt der Komprimierung in Programme umwandelt. Dann werden die Programme zur Dekompression interpretiert, um die Originaldaten wiederherzustellen". Genutzt werde dies etwa für Referenzen in dem Dex-Bytecode der App. Zusätzlich dazu kommt Superpack noch für ARM-Maschinencode zum Einsatz sowie für den von Facebook erstellten Hermes-Bytecode für Javascript.
Superpack ist in Ocaml und C geschrieben und als asymmetrisches Kompressionsverfahren gedacht. Das heißt, das Dekomprimieren sollte schnell sein, das Komprimieren darf aber langsam sein. Immerhin geschieht dies im Fall der Facebook-Apps vergleichsweise wenig und es stehen viele Ressourcen dafür bereit.
Noch fehlt Superpack laut Facebook aber eine gute Integration in die Werkzeuge von Android, etwa um Delta-Updates besser mit Hilfe der neuen Technik komprimieren zu können. Darüber hinaus plant das Team, die Technik so ähnlich auch für iOS einzusetzen. Außerdem heißt es: "Wir könnten das Offenlegen von Superpack als Open Source in Betracht ziehen". So weit ist es offenbar aber noch nicht.
https://ift.tt/2YPRmw5
Technik
Bagikan Berita Ini
0 Response to "Superpack: Facebook nutzt Compiler-Technik zur App-Kompression - Golem.de - Golem.de"
Post a Comment