stelle ich mir die GetBytes() Funktion bereits gut dafür optimiert ist. Ich kann mir keine Vorschläge vorstellen, um die Geschwindigkeit Ihres bestehenden Codes zu verbessern.
EDIT - Weißt du, ich weiß nicht, ob das schneller ist oder nicht. Aber hier ist eine andere Methode, um die BinaryFormatter mit:
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, someString);
byte[] bytes = ms.ToArray();
ms.Close();
socket.Send(bytes);
Der Grund, warum ich denke, das könnte schneller ist, dass es die Codierung Schritt überspringt. Ich bin mir auch nicht ganz sicher, ob das richtig funktioniert. Aber du könntest es versuchen und sehen. Wenn Sie die ASCII-Codierung benötigen, hilft das natürlich nicht.
Ich hatte gerade einen anderen Gedanken. Ich glaube, dass dieser Code die doppelte Anzahl an Bytes zurückgeben würde als GetBytes mit ASCII-Codierung. Der Grund dafür ist, dass alle Strings in .NET Unicode hinter den Kulissen verwenden. Und natürlich verwendet Unicode 2 Bytes pro Zeichen, während ASCII nur 1 verwendet. Daher ist der BinaryFormatter in diesem Fall wahrscheinlich nicht das Richtige, da Sie die Menge der Daten, die Sie über den Socket senden, verdoppeln würden.
Möglicherweise möchten Sie die Anwendung profilieren, bevor Sie zu viel Zeit hier verbringen. Gut-Reaktionen sind, dass dies nicht wie ein Leistungsengpass klingt, aber es gibt keine Möglichkeit, ohne harte Zahlen zu erzählen. – Rob
+1 für die Stimmung, aber das ist in den Engpass und jeder Nano zählt hier – Nosrama
Ist der Flaschenhals die Menge der Daten, die Sie über die Leitung oder die Konvertierung senden? – kibibu