【问题标题】:Fastest way to convert string array to double array?将字符串数组转换为双数组的最快方法?
【发布时间】:2012-03-20 10:44:46
【问题描述】:

我最近一直在处理大型字符串数组到数字数组的转换,我想知道目前最快的方法是什么。

起初我采用:

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

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

另外,我想知道是否有更好的类型可用于存储拆分的字符串,例如HashSet 在此转换过程中哪个可能表现更好?

【问题讨论】:

  • 一个简单的循环总是会胜过一个 Linq 查询。
  • 标题说 int 但在代码中您使用的是 double。是哪个?
  • 对不起,我不知道是不是只有我,但我有这个问题,将数字视为 *int。 :)

标签: c# .net linq


【解决方案1】:
Array.ConvertAll(sarray.Split(','), Double.Parse);

与 LINQ 的 .ToArray() 不同,它预先分配了一个大小正确的数组并且不进行任何大小调整。
这应该与手动循环没有区别。

【讨论】:

  • 这会比for 循环更快吗?
  • 哇!我总是忘记 Array 类!这太棒了。谢谢!!
【解决方案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));

【讨论】:

    猜你喜欢
    • 2016-06-06
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    相关资源
    最近更新 更多