Быстро IEnumerable в массив
От: Glas  
Дата: 12.05.13 15:14
Оценка:
Подскажи самый быстрый способ преобразования IEnumerable в массив.

На входе подается массив длинной несколько сотен миллионов значений. Нужно очищать этот массив от мусора в зависимости от текущей итерации. И есть библиотека, которая знает только о массивах.
Самое быстрое, что я смог придумать выглядит вот так.
ushort[] curBuffer = new ushort[size];//size - размер массива
for (int k = 0; k < size; k++)
     curBuffer[k] = (ushort)(_buffer[k] == (iterationNumber + 1) ? 1 : 0);//_buffer - входной массив

Это оказалось на пару секунд быстрей, чем метод ToArray().
Может, еще быстрее как-то можно?

Для тех у кого возникнут вопросы, что на входе и выходе:
Вход: 1 1 1 0 0 0 2 2 2 ... N N N
На выходе на первой итерации: 1 1 1 0 0 0 0 0 0 ... 0 0 0
На выходе на второй итерации: 0 0 0 0 0 0 2 2 2 ... 0 0 0 и тд
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.