Есть необходимость присоединять один массив байт к другому (много раз подряд).
Для этого я нашел пока 2 варианта:
arr.CopyTo(..);
либо Array.Copy(...);
StreamWriter
(то есть пишем байты в поток, потом все вместе считываем)Может, есть другие способы?
Линковский Concat
, думаю, будет долго выполняться.
Про theList.AddRange()
я вообще молчу.
Есть ли еще способы?
Важно быстродействие.
UPD:
Если я делаю так
for(var i=0;i<100;i++)
{
var sendBuff = Encoding.Unicode.GetBytes(i.ToString());
theNetwork.Write(sendBuff, 0, sendBuff.Length);
}
То на входе вот таким способом
var resp = new byte[0];
var partSize = 1024;
do
{
var subBuff = new byte[partSize];
var bytesCount = client.GetStream().Read(subBuff, 0, partSize);
var temp = resp;
resp = new byte[resp.Length + bytesCount];
temp.CopyTo(resp, 0);
Array.ConstrainedCopy(subBuff, 0, resp, temp.Length, bytesCount);
} while (client.GetStream().DataAvailable);
var s = Encoding.Unicode.GetString(resp);
Console.WriteLine(s);
я рассчитываю получить строку
0123456789101112...99
а вместо этого она обрывается на 40-50 где-то
То есть чтобы получить остальные данные, мне снова нужно снова запустить цикл приема. Но вот вопрос, а что, если отдающая сторона одновременно отдает с разных потоков разную информацию? Тогда я могу получить что-то вроде
012345678910еще какая то хрень1112...99
Но, TCP обещает доставить пакеты в том порядке, в котором они были отправлены. поэтому, если я передам один объект целиком, он и придет целиком. Поэтому мне нужно отправлять цельный массив
Как вариант, можно пометить блок кода, как Unsafe и ручками через указатели манипулировать массивом. Я думаю, что это самый быстрый вариант.
Вот тут уже провели тесты, которые подтверждают мои слова:
http://stackoverflow.com/questions/5099604/any-faster-way-of-copying-arrays-in-c
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Например, имеется произвольный текст, где могут встречаться последовательности, которые закодированы в base64
Как конвертировать клавиатурных хук который сможет понимать все клавиши и выводить нужный символ?!
Есть у меня подозрения что ReadAllText работает неприемлемо плохо, дело в том что формы у меня появляются с изменением прозрачности от нуля к единице,...
Как на полигон наложить текстуру по URL или bitmap в фреймворке SharpGL?