2009-05-15 7 views
0

Ich habe einige (kleine) Daten, auf die ich beim ersten Laden schnell zugreifen muss, aber nicht danach.Best-Speicher-Ansatz für kleine Menge von 99% statischen Daten benötigt beim Start?

Im Moment habe ich die Daten (Generic List) in eine Xml-Datei serialisiert und entserialisiere sie bei Bedarf nach Bedarf.

Meine Frage ist, sollte ich den XmlSerializer oder den BinaryFormatter verwenden? Ich mache mir keine Sorgen über die Dateigröße, sondern über die Geschwindigkeit der Serialisierung.

+0

http://developers.de/blogs/damir_dobric/archive/2007/08/05/performance-comparison-of-most-popular-serializes.aspx –

Antwort

2

BinaryFormatter ist schneller als XmlSerializer. Es muss mit viel weniger aufgeblähtem Format ohne String-Parsing-Probleme umgehen.

0

XML ist langsam, zu viel Syntax zu überprüfen. Können Sie mit einer tabulatorgetrennten oder CSV-Datei auskommen?

1

"Wir sollten kleine Wirkungsgrade vergessen, sagen wir etwa 97% der Zeit: vorzeitige Optimierung ist die Wurzel allen Übels." - Don Knuth

Wenn es eine kleine Menge ist, gehen Sie mit dem XmlSerializer, obwohl es definitiv langsamer ist. Dies ist eine dieser kleinen Effizienzgewinne, die wahrscheinlich zu Flüchen führen, wenn jemand versucht, die Datei zu betrachten, um einen Absturz zu diagnostizieren.

+2

XmlSerializer * ohne * eine Serialisierung Assembly ist schmerzhaft langsam das erste Mal . Mit einer vorgenerierten Serialisierungs-Asm hat es eine akzeptable Perf. –

2

Interessante Antworten. Ich wollte vorschlagen, dass die Daten als Code beibehalten und in eine Assembly integriert werden, auf die vom Rest der Anwendung verwiesen wird.

0

Da John Saunders es nicht vorgeschlagen hat, empfehle ich, Ihre statischen Daten als Code zu serialisieren. Als eine schwache Anspielung auf die Wartbarkeit können Sie es in einer externen Versammlung haben. Dies sollte die Lösung mit der höchsten Leistung und der geringsten anfänglichen Komplexität sein.

Wenn sich die Daten mit jeder Regelmäßigkeit ändern oder Geschäftslogik ist, dann ignorieren Sie diese Antwort. Damit du nicht gewarnt wirst!

+0

Das ist eine sehr interessante Idee, aber in meinem Fall haben die Daten die Möglichkeit, von der Bereitstellung zur Bereitstellung zu wechseln. – Nate

Verwandte Themen