将字符串数组转换为双数组的最快方法?
我一直不得不处理大型字符串数组到数组的转换,我想知道最快的方法是什么。将字符串数组转换为双数组的最快方法?
起初我通过:
double[] doubles = sarray.Split(',').Select(Double.Parse).ToArray();
...这实在是甜 ...但是今天,我决定切换回一个简单的for循环来分析所有字符串数组将翻一番,不要太奇怪,基准似乎赞成for循环..所以我应该切换回基本的循环?
此外,我想知道是否有更好的类型可用于存储拆分的字符串,例如HashSet
在转换过程中可能表现更好?
Array.ConvertAll(sarray.Split(','), Double.Parse);
与LINQ的.ToArray()
,这个预先分配正确大小的数组,并没有做任何调整大小。
这应该与手卷循环无法区分。
这会比'for'循环更快吗? – 2012-03-01 21:54:15
哇!我总是忘记Array类!这太棒了。谢谢!! – 2012-03-01 21:55:12
当我用:
double[] doubles = Array.ConvertAll(sarray.split(','), Double.Parse);
我得到这个错误:
The type arguments for method 'System.Array.ConvertAll(TInput[], System.Converter)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
但它的工作我这样做的时候:
double[] doubles = Array.ConvertAll(sarray.split(','), new Converter<string, double>(Double.Parse));
一个简单的循环会一直出执行Linq查询。 – kprobst 2012-03-01 21:51:46
标题说int,但在你使用的代码中加倍。这是什么? – cadrell0 2012-03-01 21:56:25
对不起,我不知道这是否只有我,但我有这个问题的思想数字为* int。 :) – 2012-03-01 21:59:21