小编use*_*059的帖子

如何在C#中的大数组上最大化元素操作的性能

操作是将数组的每个第i个元素(称为A)和相同大小的矩阵的第i个元素(B)相乘,并使用获得的值更新A的相同第i个元素.

在算术公式中,A'[i] = A [i]*B [i](0 <i <n(A))

在多核环境中优化此操作的最佳方法是什么?

这是我目前的代码;

var learningRate = 0.001f;
var m = 20000;
var n = 40000;
var W = float[m*n]; 
var C = float[m*n];

//my current code ...[1]
Parallel.ForEach(Enumerable.Range(0, m), i =>
{
    for (int j = 0; j <= n - 1; j++)
    {
         W[i*n+j] *= C[i*n+j];
    }
});

//This is somehow far slower than [1], but I don't know why ... [2]
Parallel.ForEach(Enumerable.Range(0, n*m), i =>
{
    w[i] *= C[i]
});


//This …
Run Code Online (Sandbox Code Playgroud)

c# arrays optimization parallel.foreach

5
推荐指数
1
解决办法
529
查看次数

标签 统计

arrays ×1

c# ×1

optimization ×1

parallel.foreach ×1