簡體   English   中英

AsParallel與經典ADO.NET

[英]AsParallel with classic ADO.NET

我想知道AsParallel使用AsParallel會以我們使用它的方式加速我的代碼。

我在這里寫了一些非常簡化的偽代碼,以說明我的想法:

假設在同一個SqlConnection下的3個SqlCommand如下(偽代碼):

RunADOQueryForRequest() // returns one row
RunADOQueryForRequestAnswer() // returns about 100 rows
RunADOQueryForOtherStuff() // returns about 1000 rows (slow query)

然后創建3個包含所有數據的對象列表(DTO):

MakeRequest()
MakeRequestAnswers()
MakeOtherStuffList()

如果我將代碼並行運行(3個並行任務),它將提高性能嗎?

我知道有很多時間,如果有的話。 但是為Parallel編寫這樣的代碼是否值得?

我認為SqlConnection類不是線程安全的,因此您肯定需要為每個任務創建一個單獨的SqlConnection實例。 然后,我認為這可能會加快數據的加載速度(但這在很大程度上取決於數據庫引擎)。

您在第一個摘要中的注釋表明,最后一個操作花費的時間最多。 如果這比前兩個操作要慢得多,那么並行運行三個操作就沒有意義(因為它不會比運行上一個任務所需的時間快)。

並行創建這三個對象可能會更容易,但這取決於您是否正在使用這三種方法進行任何復雜的處理。 如果否,那么我猜想可能大部分時間都是從數據庫中加載數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM