Frage

Ich habe die folgende Methode, um Bytes von einem Socket-Stream auf die Festplatte zu kopieren:

 public static void CopyStream(Stream input, Stream output)
 {
    // Insert null checking here for production
    byte[] buffer = new byte[8192];
    int bytesRead;
    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
    {
        output.Write(buffer, 0, bytesRead);
    }
}

Worauf ich neugierig bin, ist:Wille buffer auf dem Stapel oder auf dem Haufen zugewiesen werden?Natürlich könnte ich diese Methode unsicher machen und das hinzufügen fixed Schlüsselwort zur Variablenerklärung, aber ich möchte das nicht tun, wenn ich nicht muss.

War es hilfreich?

Lösung

Der buffer Die Variable wird auf dem Stapel zugewiesen, der 8192-Byte-Speicher beträgt buffer Die Variable enthält den Speicherort, an dem sie sich auf dem Heap befindet.

Warum redest du? fixed?Versuchen Sie, die Dinge zu beschleunigen?Das wird es mit ziemlicher Sicherheit nicht...

Um Eric Lippert zu zitieren:

"Aber in der überwiegenden Mehrheit der Programme da draußen werden lokale variable Zuteilungen und Deals nicht der Leistungsengpass sein."

Ref.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top