Schnelle verlustfreie Kompression von Zahlen, die als Text gespeichert sind
Wenn große Datenmengen bei maximaler Geschwindigkeit und gleichzeitig guter Kompression gelesen und geschrieben werden sollen, empfiehlt sich meist ein speziell auf das Problem zugeschnittener Algorithmus (siehe fc16). Für einige Anwendungsfälle ist es allerdings vorteilhaft, wenn die Daten von textbasierten Programmen gelesen werden können, z.B. von grep, sed oder awk.
fc4 (fast compression 4 bit)
Da als Text codierte Zahlen im Mittel etwas mehr als das Doppelte an Speicherplatz belegen als binär gespeicherte Zahlen, sollten große Datenmengen vor dem Schreiben auf die Festplatte komprimiert werden. Das Programm fc4 von 256.systems komprimiert Dateien, die hauptsächlich Zahlen im ASCII-Format enthalten, mit über 4 GB/s pro Rechenkern und dekomprimiert sie mit 8 GB/s pro Rechenkern (auf einem Notebook mit Intel i5 Prozessor). Dabei werden ähnliche Kompressionsraten wie bei gzip, lzma und zstd erreicht.
Benchmark 1: Kompressions- und Dekompressionsgeschwindigkeiten von verschiedenen Programmen
Benchmark 2: Kompressionsrate und Gesamtperformance von verschiedenen Programmen
Schnelle Konversion von Text zu Zahlen und zurück
Möchte man Zahlen als Text speichern, muss man sie vom Binärformat ins Dezimal- und dann ins ASCII-Format umwandeln. Unter Linux gibt es dafür in der Standard-Library die verschiedenen printf-Funktionen.
Um Zahlen aus Textdateien wieder zurück ins Binärformat umzuwandeln, gibt es atoi (ASCII to 32 bit integer), atol (ASCII to 64 bit integer) und atof (ASCII to 64 bit float). Obwohl diese Funktionen stark optimiert sind, können sie in vielen Fällen zum Flaschenhals des aufrufenden Programmes werden.
256.systems stellt die Funktionen fatoi, fatof, print_int und demnächst auch print_float bereit, die 4 bis 6 mal schneller als die Funktionen der Standard-Library sind (siehe Benchmark-Ergebnisse unten).
Benchmark: Konversion von Zahlen: Textformat --> Binärformat; C Standard Library vs. fc4
Benchmark: Konversion von Zahlen: Binärformat --> Textformat: C Standard Library vs. fc4
Kontakt
Für Anfragen zu ASCII-Zahlen-Kompression, schnellen Konversionsroutinen und ähnlichen Algorithmen steht 256.systems zur Verfügung.