すべてのデータが実際ASCIIEncoding
にASCIIになる場合は、さまざまな(完全に合理的な)ビットのエラー処理などがあるよりもわずかに高速に実行できる可能性があります。また、新しいバイトの作成を回避することでデータを高速化できる可能性があります。常に配列。すべてのメッセージの下にある上限があると仮定します。
void QuickAndDirtyAsciiEncode(string chars, byte[] buffer)
{
int length = chars.Length;
for (int i = 0; i < length; i++)
{
buffer[i] = (byte) (chars[i] & 0x7f);
}
}
次に、次のようなことを行います。
readonly byte[] Buffer = new byte[8192]; // Reuse this repeatedly
...
QuickAndDirtyAsciiEncode(text, Buffer);
// We know ASCII takes one byte per character
socket.Send(Buffer, text.Length, SocketFlags.None);
しかし、これはかなり必死の最適化です。これがボトルネックであることが証明されるまで(または、少なくともこの種の粗雑なハックが役に立たないことを証明ASCIIEncoding
するまで)、私は固執します。