我的第乙個PLINQ嘗試

2022-02-03 05:07:19 字數 1722 閱讀 8188

本人對linq這東西有極大的興趣,很喜歡linq這種查詢語法。在看了晴天豬的 「《effective c#》讀書筆記——條目8:推薦使用查詢語法而不是迴圈文章後忍不住嘗試了一把。

1.生成接下來要使用的測試資料

1

//生成資料

2private

static listgetlist()311

return

vals1;

12 }

2.使用迴圈,也就是「命令式」的

1             list vals =getlist();

23 stopwatch sw = new

stopwatch();

4sw.start();56

//用迴圈的方式對資料進行平方運算

7for (int i = 0; i < vals.count; i++)811

12//

迴圈的方式列印出結果

13foreach (var item in

vals)

1417

sw.stop();

18//

耗時19

long time =sw.elapsedticks;

20 console.writeline("

耗時:

" + time.tostring());

「命令式」也就是傳統的迴圈查詢

3.不使用迴圈,使用查詢語法,也就是「宣告式」的

1 stopwatch sw1 = new

stopwatch();

23 list vals1 =getlist();45

sw1.start();67

//使用查詢將列表中的資料執行平方操作8//

要使用plinq時,要在資料來源上呼叫 asparallel() 擴充套件方法來選擇使用 plinq

9var v = (from a in vals1 select a *a).asparallel();

1011

//對資料來源中的每個元素並行呼叫指定的操作

12//

遍歷資料來源並輸出每個元素

13 v.forall(a => console.write(a + "

"));

1415

sw1.stop();

16long time1 =sw1.elapsedticks;

17 console.writeline("

耗時:

" + time1.tostring());

從上面給出的這兩個例子可以明顯看出「查詢語法」方式寫的**看著比較舒服吧,行數就比迴圈的少,呵呵,linq。**可讀性也比「命令式」的程式設計要好。

測試截圖:

使用迴圈的:

使用查詢語法的:

雖然說資料每次生成的不一樣,計算的耗時可能也不同,但是迴圈的耗時為10145 而查詢語法的為132278,顯然不是乙個數量級的。

可以看出使用迴圈執行速度比使用查詢語法的速度要快,但是使用查詢語法寫出來的**可讀性比較高,較使用迴圈的容易理解。寫的不一定好也不一定全對,但我還會繼續往下學習,希望各位大蝦們提出意見或建議。

第乙個AWK程式的嘗試

為了統計api的訪問,需要讀取8個g的資料,所以學習了下文字處理神器,awk。簡單例項如下 以 t分割的文字 awk f t 獲取小時的函式 function gethours times awk 可分為三個部分 中間部分 表示對每行的處理,begin 表示每行處理之前的預處理,end 表示逐行處理...

我的第乙個程式

我的第乙個vc程式終於寫完了,花了2周,之前從沒有用vc寫過程式,也沒讀過什麼程式,只是在看書,看了幾百頁 mfc windows程式設計 正好有個機會,老師讓寫個vc程式,就試著寫了。程式的功能是不同地方的access的更新的記錄整合到一台機子上的access中,支援斷網自動連線,用的是socke...

我的第乙個部落格

我是乙個有點脫離時代的年輕人,沒有iphone,不玩微博,沒有崇拜的明星,不是任何人的粉絲。前幾天我的乙個領導告訴我,應該多總結,可以開個微博,把記錄的東西時不時拿出來複習一下,慢慢就會積累出很多財富。所以我開了第乙個部落格,當然遠不如微博那麼新潮。我想感謝我的這位領導,在我的職業生涯中,他是我的領...