Здравствуйте, Glas, Вы писали:
G>Подскажи самый быстрый способ преобразования IEnumerable в массив.
G>На входе подается массив длинной несколько сотен миллионов значений. Нужно очищать этот массив от мусора в зависимости от текущей итерации. И есть библиотека, которая знает только о массивах.
G>Самое быстрое, что я смог придумать выглядит вот так.
G>G>ushort[] curBuffer = new ushort[size];//size - размер массива
G>for (int k = 0; k < size; k++)
G> curBuffer[k] = (ushort)(_buffer[k] == (iterationNumber + 1) ? 1 : 0);//_buffer - входной массив
G>
G>Это оказалось на пару секунд быстрей, чем метод ToArray().
G>Может, еще быстрее как-то можно?
G>Для тех у кого возникнут вопросы, что на входе и выходе:
G>Вход: 1 1 1 0 0 0 2 2 2 ... N N N
G>На выходе на первой итерации: 1 1 1 0 0 0 0 0 0 ... 0 0 0
G>На выходе на второй итерации: 0 0 0 0 0 0 2 2 2 ... 0 0 0 и тдъ
Откуда сотня миллионов такая идет ?