NewtonSoft Json Serializer-Leistung

8

Ich habe ein Objekt, das ich in Json mit NewtonSoft Json.Net serialisieren. Das Objekt ist relativ groß, der resultierende Json-Wert beträgt etwa 300 KB, aber der Serialisierungsprozess dauert etwa 60 Sekunden.

Die zu serialisierenden Objekte sind einfach POCOs.

Der Code, den ich verwende, ist

%Vor%

Gibt es etwas, das getan werden kann, um die Serialisierung zu beschleunigen, Attribute hinzuzufügen usw.

EDIT: Ich habe gerade mit ServiceStack.Text Json Serializer getestet und das dauert 48 Sekunden, immer noch ziemlich langsam.

%Vor%     
Craig 20.04.2014, 14:26
quelle

3 Antworten

13

Haben Sie versucht, Ihr Objekt mit JSON.NET manuell in JSON zu serialisieren? Ich habe es viel schneller gefunden, wenn Sie große Daten und viele Eigenschaften haben. Unten ist ein Beispiel:

%Vor%

Es bedeutet mehr Arbeit, aber wenn die Leistung in Ihrem Ziel liegt, werden Sie keine schnellere Option finden.

    
Jon Bellamy 20.04.2014, 17:08
quelle
4

Sie sollten Job Bellamy die Punkte für die Antwort geben, aber hier ist ein wenig mehr Details:

Ich hatte das gleiche Problem mit einem Projekt, an dem ich gerade arbeite, und habe es gelöst, indem ich den Ratschlägen auf dieser Seite gefolgt bin:

Ссылка

Insbesondere empfehlen sie, Ihre Objekte manuell zu serialisieren, wenn die Leistung kritisch ist:

%Vor%

Mein Beispiel in VB sieht so aus:

%Vor%

Beachten Sie, dass beide Funktionen stark typisiert sind. Ich glaube wenn du es benutzt %Code% Es wird Reflektion verwendet, um den Job zu erledigen (was sich wirklich addieren kann, wenn Sie viele Objekte mit vielen Eigenschaften haben).

Wie auch immer ... sobald ich meinen eigenen Serializer geschrieben habe, ging meine Zeit, eine Liste von 250 "Word" -Objekten zu serialisieren, von 28 Sekunden mit der JsonConvert.SerializeObject () -Methode auf 31 Millisekunden unter Verwendung meiner eigenen Funktion.

    
Frog Pr1nce 05.02.2015 14:11
quelle
0

Dies verwendet immer noch den Serializer ( der interne Reflektion verwendet und ), es endete damit, mein Geschwindigkeitsproblem zu lösen + Ich musste nicht alles manuell eingeben. Ich weiß nicht, ob JsonConvert.SerializeObject() ist anders als% serializer.Serialize() , aber ich dachte, ich würde in der Hoffnung teilen, dass dies helfen könnte

%Vor%     
Sam 16.08.2016 21:05
quelle

Tags und Links