Schnelles JSON parsen unter C++
Dieses Tutorial zeigt wie man schnelles JSON parsen unter C++ erreicht. Immer wenn es um Leistung geht wird C++ verwendet. Mit Bibliotheken kann man selbst mit dieser alten Sprache mit modernen Schnittstellen und Formaten wie JSON umgehen. Das geht nun noch schneller!
Schnelles JSON parsen unter C++
Als Webentwickler fällt man aus allen Wolken: ein mit C++ entwickeltes Programm läuft bis zu 10 mal schneller als jeder PHP Code. Genau dieser Geschwindigkeitsbonus ist bei rechenintensiven Algorithmen auch nötig, man denke nur an Deep Lerning. In diesem Bereich benötigt man große Datenmengen, meistens liegen diese als *.csv Datei vor. Im Web- und IoT Bereich ist aber das JSON Format üblicher, weshalb man in C++ zuerst einmal eine effektive Bibliothek benötigt um damit zu arbeiten. Das ging bis jetzt ganz gut, mit simdjson läuft das Parsen mit vollständiger Validierung nun aber vier Mal so schnell. Die Bibliothek samt Source Code und Paper findet man auf GitHub.
Schneller parsen
Mit bis zu 2,2 GB/s stellt simdjson einen neuen Rekord an verarbeiten Daten pro Sekunde auf aktuellen Skylake Prozessoren auf. Eine detaillierte Grafik dazu zeigt die Performance der Bibliothek im Vergleich zu anderen üblichen Bibliotheken am Beispiel von mehreren Testdateien:
Die Grafik zeigt eindrucksvoll warum man die JSON Bibliothek im C++ Code tauschen sollte. Die Geschwindigkeit ist nahezu in allen Beispielen doppelt so hoch wie in alternativen Implementierungen. In diesem breiten Spektrum an Tests sieht man auch sehr gut, dass man die bessere Performance nicht nur unter perfekten Laborbedingungen erreicht. Die Empfehlung ist deshalb zu wechseln! Dank der Apache 2.0 Lizenz ist die Verwendung auch in kommerziellen Produkten einfach möglich.
Warum JSON?
Das JSON Format läuft aktuell dem bisher üblichen XML Format für den Datenaustausch von Schnittstellen den Rang ab. Vor Jahren war noch das XML Format die beste Wahl – doch wegen komplizierten Namespace Verstrickungen und großen Overhead durch die Tags setzt man heute lieber auf JSON. Damit überträgt man mehr Daten zu weniger Bytes. Obwohl die Bandbreite heute weniger das Thema ist setzen vor allem neue Technologien rund um IoT Geräte ausschließlich auf das JSON Format. JSON ist viel einfacher zu parsen als XML.
Warum C++?
Jeder frisch gebackene Entwickler wird als Sprache immer C# oder Java vorschlagen. Obwohl C++ der Opa (oder gar Uropa?) der aktuellen Generation an Programmiersprachen ist läuft es in High Performance Umgebungen allen Alternativen den Rang ab. In aktuellen Lead Technologien (Künstliche Intelligenz, Blockchain, …) ist ein Einsatz von anderen Sprachen bestenfalls fürs Prototyping sinnvoll. Doch nicht nur dort, wie zuletzt berichtet ist auch die Windows 10 Rechner App mit C++ entwickelt. C++ ist auf effiziente Bibliotheken für moderne Dateiformate und Schnittstellen angewiesen. Als Entwickler möchte man nicht immer bei 0 anfangen (sonst würde man doch eher C# oder Java bevorzugen).
Fazit.
Schnelles JSON parsen unter C++ ist für bestimmte Anwendungsgebiete sinnvoll. Gerade im Deep Learning Bereich benötigt man sehr viel Rechenzeit und profitiert von schnellerem Parsen von JSON Dateien enorm.
Wo verwendest du das JSON Format unter C++?