2011-02-25 85 views
0

我有一个方法可以为每个用户控件(.ascx)动态地进行一些调用。这些调用反过来会为每个用户控件执行大量计算(3-4秒)。我能够添加一个Parallel.For用于通过用户控制进行循环,并将时间降至5 - 6秒。.net 4.0并行扩展

Parallel.For(each user control) 
{ 
compute(); 
} 

List<int> compute() 
{ 

    for(i=0; i<999999;i++) 
      {.....} 

} 

我在想,如果它将使如果我用嵌套循环的Parallel.For太大的区别,所以这样的事情。

Parallel.For(each user control) 
{ 
compute(); 
} 

List<int> compute() 
{ 

    Parallel.For(i=0; i<999999;()=> 
      {.....} 

} 

嵌套并行结构的帮助?

+1

有多少个控件? – 2011-02-25 21:19:01

回答

2

这将取决于控件的数量。

如果你有很多控件(CPU数量超过2倍),嵌套Parallel.For循环可能会导致它运行速度慢得多,因为你添加的开销不能解决,因为你已经已经最大限度地提高了系统的并发性。

但是,如果您只有一个或两个控件,并且系统中有4个或8个或更多内核,则嵌套可能会有所帮助。

如果有疑问,我会建议尝试它并分析它是否有帮助。只需确保在不同的硬件集上进行配置文件(以匹配您的部署目标),因为并发配置文件非常依赖于硬件。