Подскажи самый быстрый способ преобразования 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 и тд