Ответ 1
Array.ConvertAll(sarray.Split(','), Double.Parse);
В отличие от LINQ .ToArray()
, это предварительно назначает массив правильного размера и не производит никакого изменения размера.
Это должно быть неотличимым от ручного проката.
В последнее время мне приходится иметь дело с преобразованием больших массивов строк в числовые массивы, и мне интересно, какой самый быстрый способ для этого действительно существует.
Сначала я принял:
double[] doubles = sarray.Split(',').Select(Double.Parse).ToArray();
... который действительно сладок... Но сегодня я решил переключиться на простой цикл, чтобы разобрать все строки в массиве до Double, и не удивительно, что эталонная оценка, похоже, благоприятствовала циклу for. Я возвращаюсь к базовому циклу?
Кроме того, я хочу знать, есть ли более лучший тип, который можно использовать для хранения разделенных строк, например. HashSet
, который может работать лучше во время этого преобразования?
Array.ConvertAll(sarray.Split(','), Double.Parse);
В отличие от LINQ .ToArray()
, это предварительно назначает массив правильного размера и не производит никакого изменения размера.
Это должно быть неотличимым от ручного проката.
Когда я использовал:
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));