sobie wyobrazić getBytes function() jest już dobrze zoptymalizowane dla tego produktu. Nie mogę wymyślić żadnych sugestii, aby poprawić prędkość twojego istniejącego kodu.
EDYCJA - Wiesz, nie wiem, czy to jest szybsze, czy nie. Ale tu jest inna metoda pomocą BinaryFormatter:
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, someString);
byte[] bytes = ms.ToArray();
ms.Close();
socket.Send(bytes);
Powodem myślę, że to może szybciej jest to, że pomija się etap kodowania. Nie jestem też całkowicie pewien, czy to zadziała poprawnie. Ale możesz spróbować i zobaczyć. Oczywiście, jeśli potrzebujesz kodowania ASCII, to to nie pomoże.
Właśnie miałem inną myśl. Wierzę, że ten kod zwróciłby podwójną liczbę bajtów niż przy użyciu GetBytes z kodowaniem ASCII. Powodem jest to, że wszystkie łańcuchy w .NET używają unicodu za kulisami. I oczywiście Unicode używa 2 bajty na znak, podczas gdy ASCII używa tylko 1. Więc BinaryFormatter prawdopodobnie nie jest tym, czego można używać w tym przypadku, ponieważ podwajasz ilość danych wysyłanych przez gniazdo.
Może zechcieć profilować aplikację, zanim spędzicie tu zbyt dużo czasu. Odruchy jelita polegają na tym, że nie brzmi to jak wąskie gardło wydajności, ale nie da się odróżnić bez twardych liczb. – Rob
+1 za sentyment, ale to jest w wąskim gardle i liczy się każda nano. – Nosrama
Czy wąskie gardło to ilość danych wysyłanych przez kabel lub konwersję? – kibibu