【问题标题】:Parallel For to sum an array of ushorts (big array 18M)Parallel For 对 ushorts 数组求和(大数组 18M)
【发布时间】:2013-02-17 05:46:12
【问题描述】:

我想使用并行处理来获取无符号短(16 位)值的大型数组的数组统计信息。

ushort[] 数组 = 新的 ushort[2560 * 3072]; // x = 行(2560) y = 列(3072)

double avg = Parallel.For (0, array.Length, WHAT GOES HERE);

标准差和行均值的标准差相同。

我有这些函数的正常 for 循环版本,当与中值滤波器方法结合使用时,它们花费的时间太长。

最终产品是尝试为数组获取中值滤波器。但第一步也很重要。因此,如果您的整个解决方案很棒,但如果您也想在第一部分提供帮助,我们将不胜感激。

【问题讨论】:

  • 有什么方法可以为 ushorts 使用预定义的 int 函数?

标签: c#-4.0 parallel-processing


【解决方案1】:

您尝试过 PLINQ 吗?

double average = array.AsParallel().Average(n => n);

我不确定使用大量 ushort 值的性能如何,但值得测试一下它是否满足您的需求。

【讨论】:

  • +1 完美运行。我没有注意到 ushorts 数组的平均值是两倍。测试后不得不使用double。也为此 +1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2016-09-05
  • 2014-07-28
相关资源
最近更新 更多