Самый быстрый способ преобразования массива строк в двойной массив?

В последнее время мне приходится иметь дело с преобразованием больших массивов строк в числовые массивы, и мне интересно, какой самый быстрый способ для этого действительно существует.

Сначала я принял:

double[] doubles = sarray.Split(',').Select(Double.Parse).ToArray();

... который действительно сладок... Но сегодня я решил переключиться на простой цикл, чтобы разобрать все строки в массиве до Double, и не удивительно, что эталонная оценка, похоже, благоприятствовала циклу for. Я возвращаюсь к базовому циклу?

Кроме того, я хочу знать, есть ли более лучший тип, который можно использовать для хранения разделенных строк, например. HashSet, который может работать лучше во время этого преобразования?

Ответы

Ответ 1

Array.ConvertAll(sarray.Split(','), Double.Parse);

В отличие от LINQ .ToArray(), это предварительно назначает массив правильного размера и не производит никакого изменения размера.
Это должно быть неотличимым от ручного проката.

Ответ 2

Когда я использовал:

double[] doubles = Array.ConvertAll(sarray.split(','), Double.Parse);

Я получил эту ошибку:

Аргументы типа для метода 'System.Array.ConvertAll(TInput [], System.Converter) не могут быть выведены из использования. Попробуйте явно указать аргументы типа.

Но это сработало, когда я это сделал:

double[] doubles = Array.ConvertAll(sarray.split(','), new Converter<string, double>(Double.Parse));