将字符串数组转换为双数组的最快方法?

时间:2012-03-01 21:50:28

标签: c# .net linq

我最近不得不处理大型字符串数组到数字数组的转换,我想知道最快的方法是什么。

起初我采用了:

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

...这真的是 sweet ...但是今天,我决定切换回一个简单的for循环来将数组中的所有字符串解析为Double,并且不太令人惊讶的是基准似乎有利于for循环..所以我应该切换回基本的for循环吗?

另外,我想知道是否有更好的类型可用于存储分割字符串,例如HashSet在转化期间可能表现更好?

2 个答案:

答案 0 :(得分:42)

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

与LINQ的.ToArray()不同,这会预先分配一个正确大小的数组,并且不会进行任何大小调整。
这应该与手卷循环无法区分。

答案 1 :(得分:14)

我用的时候:

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));