|
并行計算無疑是.NET Framework平臺的一大亮點,它自動的將一個任務分解,并以并發的形式執行,程序員不用操心各任務之間的協作和同步問題,這使得可以更加專注于業務的實現。
.NET 中的 TPL(Task Parallel Library),中文意思是任務并行庫,它的設計是為了能更簡單地編寫可自動使用多處理器的托管代碼。使用該庫,用戶可以非常方便地用現有序列代碼表達潛在并行性,這樣序列代碼中公開的并行任務將會在所有可用的處理器上同時運行,通常這會大大提高速度。
但是,從網上很多已經發布的并行計算的例子來講,有很多存在一定的誤區甚至是誤導,這導致了一線編程人員產生一些錯誤的思路,它們多是通過示例講述并行計算的性能優越性,似乎程序人員可以不費吹灰之力就能將程序性能提升N倍,如果這些想法沒有經過比較就應用于實際,那么就會造成一定的損失。這篇文章就來聊聊關于合理使用并行計算的問題,供大家參考,這些誤區主要包括:
1. 只要使用并行就會提高程序性能
2. 并行循環嵌套越多程序性能越高
3. 并行計算是運行時的事
下面讓我們來一個個的講解這些誤會。
● 誤區一 .只要使用并行就會提高程序性能
實時并不是這樣,實際上并行計算的使用對前提要求非常嚴格,一般情況大量使用并行計算不但不會提升性能,反而會適得其反,下面有兩個Case給大家說明。
Case 1. 使用Thread.Sleep()比較并行與單行程序的性能并不客觀。
在許多并行計算與單行方式程序性能比較的例子中,很多都包含類似Thread.Sleep()的語句,運行這樣的Demo我們確實看到,并行的時間結果竟然提升如此許多,但是你有沒有仔細研究一下時間降低的原因呢?
有如下兩段代碼:
Code Part A:
for (int i = 0; i < 10; i++)
{
a = i.ToString();
Thread.Sleep(200);
}
NET技術:DotNet并行計算的使用誤區,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。