繁体   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