Laden...

Performance Stream.write bei WebRequest

Erstellt von Foermchen82 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.199 Views
F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 13 Jahren
Performance Stream.write bei WebRequest

Hallo zusammen,

ich habe folgenden Code:


            WebRequest request = WebRequest.Create("https://test.XYZ.com");
            request.Method = "POST";

            byte[] byteArray = StringToUTF8ByteArray(message);
            request.ContentLength = byteArray.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(byteArray, 0, byteArray.Length);

ich habe mit mit Consolen-Ausgaben mal auch Zeitausgaben gemacht, und habe festgestellt, dass das Stream.write immer zwischen 5 und 10 secunden dauert.

Wieso ist das so?? das Bytearray hat im Schnitt nur eine Länge von 230.

10 Sekunden finde ich schon etwas viel!

danke im Voraus

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

ich denke, die Zeit geht nicht beim Write() drauf, sondern durch die Initialisierung/Handshake der HTTPS-Verbindung. Das dauert immer etwas, und da lässt sich IMO auch wenig machen.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 13 Jahren

Nein ich hab mir direkt vor und nach dem Stream.write die Zeit ausgeben lassen.

3.170 Beiträge seit 2006
vor 13 Jahren

Hallo,

und woher weisst Du genau wann die gesicherte Verbindung initialisiert wird? Vielleicht ist das erst der Fall, wenn tatsächlich geschrieben wird.
Du kannst das ja mal testen.
Miss mal die Zeit, die request.GetRequestStream() braucht. Wenn das schnell geht, ist die sichere Verbindung wahrscheinlich noch nicht initialisiert.
Dann schreib Dein Array in mehreren Teilen in den Stream (mehrere Write-Aufrufe).
Wenn nur der erste Aufruf so lange braucht, dürfte die Sache klar sein...
Die Ergebnisse würden mich auf jeden Fall auch interessieren.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

F
Foermchen82 Themenstarter:in
101 Beiträge seit 2005
vor 13 Jahren

danke für die Antwort.

Es ist tatsächlich so, dass der Aufruf "GetRequestStream" die Zeit braucht. Das Schreiben an sich geht fix.

Also wird scheibar erst bei dem Aufruf die Verbindung initialisiert.
Da kann man dan wohl nichts machen.

Kann ich die Webrequest samt stream eiegntlich wieder verwenden, oder muss ich das jedes mal neu erzeugen wenn ich neue Requests durch führe????

Totzdem danke.