4 Stimmen

Größe eines Wörterbuchs

Ich bin derzeit dabei, eine Website in C# zu entwerfen, die einige sehr komplexe Codes verwendet, um eine Suchliste zu generieren, die ich derzeit als baumartige Struktur entwerfe.

Der Hauptgrund, warum ich einen Baum verwende, ist die Tatsache, dass diese Website viel Traffic hat und einen sehr komplexen Suchfilter hat, was bedeutet, dass Skalierbarkeit sehr wichtig ist. Allerdings mache ich mir Sorgen, dass die Speicheranforderungen des Baumes die effektiven Verarbeitungsanforderungen übersteigen können, wenn einfach Werte jedes Mal neu berechnet werden.

Gibt es einen zuverlässigen Weg, um die Größe eines Wörterbuchs in C# zu messen? Die Methode Marshal.SizeOf() erlaubt dies nicht, da der Code nicht ohne Verwaltung ist.

0 Stimmen

+1 Ich hatte das gleiche Problem: stackoverflow.com/questions/751710/…

1 Stimmen

Betrachten Sie die Verwendung des Speicherprofils; sein Zweck besteht darin, Ihnen zu helfen, Ihre Speichernutzung zu analysieren. msdn.microsoft.com/de-de/library/ms979205.aspx

3voto

Cheeso Punkte 184210

Der beste Weg ist es, die Last auf der Website unter verschiedenen Modellen zu simulieren und die relevanten Leistungsindikatoren zu überprüfen die relevanten Leistungsindikatoren.

Zur Vereinfachung könnten Sie nur den Code extrahieren, der Datenstrukturen erstellt und speichert, und diesen in eine Konsolenanwendung einbetten. Führen Sie eine simulierte Last aus und überprüfen Sie dort die Leistungsindikatoren. Sie können die Dinge variieren und den Einfluss auf den Speicherverbrauch und die Garbage Collection messen. Auf diese Weise würden Sie die Effekte isolieren, die Sie messen möchten.

Wenn Sie denken: "Mann, das hört sich nach viel Arbeit an", dann ist es wahrscheinlich besser, einfach mehr Arbeitsspeicher zu kaufen.

0voto

Alexandru Nedelcu Punkte 7914

Ein Weg, um es zu tun ... initialisieren Sie Ihren Baum mit einer beliebigen Anzahl von Elementen, messen Sie die vom Prozess verbrauchte Speichergröße, fügen Sie 1000 neue Elemente hinzu, messen Sie die Speichergröße erneut, subtrahieren Sie und teilen Sie.

0voto

Groo Punkte 47623

Sie könnten eine kleine App mit einem einzigen Wörterbuch erstellen und sie dann in verschiedenen Szenarien mit WinDbg oder ClrProfiler analysieren.

Ich glaube nicht, dass es eine Möglichkeit gibt, die Gesamtgröße des Objekts zur Laufzeit zu erhalten (abgesehen vom Durchlaufen interner Felder mit Reflektion?).

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