Wir sollten beim Schreiben von Code die Leistung im Auge behalten und gleichzeitig Nano-Optimierungen vermeiden. Was wie eine sparsame Optimierung aussieht, macht manchmal einen großen Unterschied. Heute werden wir sehen, wie System.Text.Json eine Performance-Penalty-Falle hat.
Was ist falsch an diesem Code?
Jedes Mal, wenn wir diese Funktion ausführen, erstellt sie eine neue JsonSerializerOptions. Wie schlimm ist es, jedes Mal ein neues Objekt zu instanziieren? Im Allgemeinen ist das Erstellen eines neuen Objekts in Bezug auf Leistung und Speicherzuweisung vernachlässigbar. Dennoch erhielt mein Team bei der Erstellung eines Leistungsprofils verdächtige Ergebnisse. Die für diese Funktionen benötigte Zeit war gleich:
Das neue System.Text.Json verwendet die Instanzreferenz von JsonSerializerOptions, um Serialisierungsmetadaten zwischenzuspeichern. Wenn Sie also jedes Mal eine neue Instanz bereitstellen, verlieren Sie die Zwischenspeicherung, und der Code muss die teure Operation zum Erstellen der Metadaten für jede Funktion ausführen Anruf.
Das Problem ist so häufig, dass Microsoft diesem Thema sogar eine ganze Seite gewidmet hat.
Die Dokumentation enthält dieses Benchmark-Beispiel:
Wie Sie den Dokumenten entnehmen können, ist der Unterschied enorm, über 200-mal teurer. Und es gibt nichts, was Sie darüber aufklärt, keine Ausnahme oder Warnung. Sie finden dies nur während des Lasttests und der Profilerstellung. Ich frage mich, ob dies eine Warnung sein sollte, also reduzieren wir die Häufigkeit, mit der dieser Fehler gemacht wird.
Gute Praktiken wie das Kennen der Lebenszyklen von Objekten und das Optimieren der Erstellung für Singletons zahlen sich möglicherweise mehr aus als das, wonach sie aussehen. Ich empfehle daher, zu lernen, wann Sie ein Singleton oder ein neues Objekt pro Anfrage möchten.
Denken Sie daran, dass das Erstellen von Serializer-Optionen jedes Mal erhebliche Auswirkungen hat, da das Framework interne Metadaten für die SerializerOptions-Referenz zwischenspeichert.
Wenn Sie ein neues JsonSerializerOptions() sehen, vergewissern Sie sich, dass es sich um ein Singleton-Muster handelt.
Viel Spaß beim Codieren.
Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.
Unsere Sprache ist ein mächtiges Werkzeug, das unsere Gedanken, Einstellungen und Handlungen formen kann. Selbst scheinbar harmlose Begriffe können schädliche Vorurteile und Stereotypen aufrechterhalten.
Es fällt mir plötzlich auf, wie so oft. Es ist wieder die Mitte. <Nein, nicht die im Pazifik, du Schlappschwanz, die auf dem Jahrmarkt> Jede Schlagzeile laut…..
In der heutigen hypervernetzten Welt spielen Mediensysteme eine entscheidende Rolle bei der Bildung der öffentlichen Meinung und damit bei der demokratischen Entscheidungsfindung. In seiner tiefgreifenden Analyse der politischen Ökonomie der Kommunikation stellt der Wissenschaftler Robert McChesney die herkömmliche Meinung in Frage und präsentiert die „fünf Wahrheiten“ über die Medien, wie er sie nennt.
Einleitung: Willkommen, mutige Leser, zu einer Reise, die uns in die dunkelsten Tiefen unseres Planeten führt. In diesem Blog tauchen wir in die rätselhafte Welt des Marianengrabens ein, decken seine verborgenen Geheimnisse auf und decken die gruseligen Wahrheiten auf, die unter seiner Oberfläche liegen.
Es war nach Mitternacht, als Hayden Katie nach ihrem gemeinsamen Abend zurück in ihren Studentenwohnheim fuhr. Sie hatte morgens einen frühen Unterricht und hatte keine Kleidung mehr zum Wechseln, nachdem sie die Nacht zuvor bei ihm übernachtet hatte.