[C#] wie man die am besten geeignete Puffergröße zum Lesen oder Schreiben von Stream basierend auf dem aktuellen Server findet


Answers

Ich habe mich oft selbst gefragt. Aber am Ende denke ich nicht, dass es eine allgemeine Regel gibt, die anzuwenden ist. Es kommt immer auf Ihre spezifischen Bedürfnisse an.

Als Faustregel gilt: Wenn Ihr Puffer größer ist, benötigen Sie weniger Roundtrips zum Dateisystem oder zur Datenbank, was für die meisten Fälle am besten ist.

Wie viele Daten Ihr System jedoch gleichzeitig in den Speicher einlesen kann, ohne andere Anwendungen zu erstellen, hängt stark von Ihrer individuellen Umgebung ab. Einige mobile Geräte haben möglicherweise andere Besonderheiten als Ihre überdimensionierte Serverhardware und so weiter.

Andere Dinge, die berücksichtigt werden sollten, sind die Netzwerkbandbreite und andere gemeinsam genutzte Ressourcen sowie die Auswirkungen auf die Performance.

Zum Beispiel haben wir bei einem Projekt mit Tausenden von Bilddateien nach mehreren Versuchen festgestellt, dass die Idela-Puffergröße für uns bei ungefähr 1 MB lag. Bei Bildern mit einer geringeren Größe als der verwendeten wir eine Puffergröße, die der Dateigröße entspricht. Für dein Szenario würde das natürlich nicht passen.

Rico Mariani, Performance-Experte bei Microsoft, nennt die 10 wichtigsten Aspekte der Programmierung für die Performance: Messen, Messen, Messen, Messen, ... (Sie bekommen den Punkt. :-))

Question

Ich schreibe einen Server, der große Dateien / Datenbanken vorbereitet und schreibt.

Ich habe Stream-Lese- und -Schreibfunktionen an vielen Stellen verwendet, an denen ich 8192 als Puffergröße verwende.

Ich lese auch große Eingabe von TCP-Sockets.

Ich weiß nicht, wie die VMs konfiguriert werden, auf denen der Dienst bereitgestellt wird.

Gibt es eine eingebaute Funktion, mit der ich die am besten geeignete Puffergröße für meinen Server ermitteln kann?