2011-02-25 86 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個或更多內核,則嵌套可能會有所幫助。

如果有疑問,我會建議嘗試它並分析它是否有幫助。只需確保在不同的硬件集上進行配置文件(以匹配您的部署目標),因爲併發配置文件非常依賴於硬件。