小编use*_*489的帖子

为什么 Parallel.For 无法快速处理堆密集型操作?

对于某些操作,Parallel可以很好地随 CPU 数量进行扩展,但对于其他操作则不然。

考虑下面的代码,function1获得 10 倍的改进,同时function2获得 3 倍的改进。这是由于内存分配,还是GC?

void function1(int v) {
    for (int i = 0; i < 100000000; i++) {
        var q = Math.Sqrt(v);
    }
}
void function2(int v) {
    Dictionary<int, int> dict = new Dictionary<int, int>();
    for (int i = 0; i < 10000000; i++) {
        dict.Add(i, v);
    }
}
var sw = new System.Diagnostics.Stopwatch();

var iterations = 100;

sw.Restart();
for (int v = 0; v < iterations; v++) function1(v);
sw.Stop(); …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing multithreading parallel.for

7
推荐指数
1
解决办法
566
查看次数