[英]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.