11 Stimmen

Erlang JSON-Bibliotheken: Serialisierung Leistung?

Es gibt eine Reihe von JSON-Bibliotheken für Erlang, und es ist mir nicht klar, welche die besten Leistungsmerkmale (und in zweiter Linie, Benutzerfreundlichkeit), insbesondere für Erlang-zu-Json-Serialisierung haben.

Mein Anwendungsfall erfordert sowohl JSON-Parsing und Serialisierung, aber der Erlang-Code wird wahrscheinlich mindestens zwei Größenordnungen mehr JSON-Ausgabe (d.h. Serialisierung) produzieren, als es Eingabe empfangen wird.

Zu den mir bekannten Bibliotheken gehören die folgenden (und vielleicht gibt es noch weitere, die ich nicht gefunden habe):

9voto

Eric Punkte 2696

Yo uso rfc4627.erl (Ich bin darüber gestolpert, und die Leistung war kein Problem)

Ich erwarte jedoch, dass die verschiedenen nativen Erlang-Bibliotheken ähnlich gut abschneiden werden. Sie teilen Ideen (wie in der Code-Kommentare ). AFAIK mochijson y rfc4627 haben das gleiche Erlang-Quellformat.

eep018 ist C, und da es sich um die Umsetzung bemüht ... hrm ... eep-0018 die term_to_json nativer Kodierer, der in einer zukünftigen Version von Erlang enthalten sein könnte. Ich habe es nie ausprobiert und es scheint nicht aktiv gepflegt zu werden.

Meine abschließende Empfehlung ist die Verwendung von mochiweb's mochijson(2). Es ist die de facto Standard und wird aktiv gepflegt und unter anderem von CouchDB und Facebook verwendet.

Was die Wahl zwischen mochijson y mochijson2 , este könnte Ihnen helfen.

2voto

abecciu Punkte 21

Ich habe mit jsonerl in letzter Zeit. Es basiert auf mochijson2 und ist viel einfacher und intuitiver zu bedienen.

2voto

0xAX Punkte 19599

Versuchen Sie https://github.com/si14/erl_json_test erlang json benchmarks. Es enthält Benchmarks für:

  • Posten auflisten

  • JSONX

  • Jiffy

  • Mochijson2

  • JSX

-2voto

Matt Baker Punkte 3564

Ich hoffe jedoch, dass diese Antwort nicht auf Ablehnung stößt:

Auch ich habe mich mit JSON-Parsing und Serialisierung für ein Projekt beschäftigt. Ich musste eine Menge Daten parallel verarbeiten, also klang Erlang großartig! Aber eine Menge davon war der Umgang mit Zeichenfolgen in Form von JSON-Daten, und das ist, wo die Dinge sauer ging.

Wie Sie wahrscheinlich wissen, sind Strings in Erlang vollwertige Listen von Zeichen. Im Gegensatz zu Strings in den meisten Sprachen (ein Char ist "ungefähr" ein Byte) wird jedes Zeichen in Erlang durch eine ganze 32-Bit-Ganzzahl dargestellt! Ihre Zeichenketten sind also schon ziemlich groß.

Da es sich um eine Liste handelt, ist der Zugriff auf ein bestimmtes Element der Zeichenkette O(N) statt O(1), wie man es bei einem Array von Zeichen erwarten würde. Und da Strings in Erlang unveränderlich sind, kann eine einfache Verkettung zu einem sehr langsamen Prozess werden. Am Ende wurde mir klar, dass ich einfach versucht hatte, die falsche Sprache zu verwenden.

Höchstwahrscheinlich wissen Sie all diese Dinge bereits, aber ich hielt es für sinnvoll, dies als Antwort für andere zu hinterlassen, die in Zukunft auf Ihren Beitrag stoßen könnten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X