【问题标题】:AsParallel with classic ADO.NETAsParallel 与经典 ADO.NET
【发布时间】:2010-10-01 15:01:54
【问题描述】:

我想知道 AsParallel 的使用是否会以我们使用它的方式加速我的代码。

我在这里写了一些非常简化的伪代码,以说明我的想法:

假设3个SqlCommand在同一个SqlConnection下像这样(伪代码):

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

然后创建 3 个包含所有数据的对象列表 (DTO):

MakeRequest()
MakeRequestAnswers()
MakeOtherStuffList()

如果我将该代码作为并行(3 个并行任务)运行,它会提高性能吗?

我知道有很多如果和何时。但是为 Parallel 编写这样的代码值得吗?

【问题讨论】:

    标签: c# .net ado.net parallel-processing


    【解决方案1】:

    我不认为SqlConnection 类是线程安全的,因此您肯定需要为每个任务创建一个单独的SqlConnection 实例。然后我认为它可能会加快数据的加载速度(但这在很大程度上取决于数据库引擎)。

    您在第一个 sn -p 中的 cmets 表明最后一个操作占用了大部分时间。如果这比前两个操作慢得多,那么并行运行三个操作就没有意义(因为它不会比运行最后一个任务所需的时间快)。

    并行创建三个对象可能会更容易,但这取决于您是否在这三个方法中进行任何复杂的处理。如果不是,那么我猜从数据库加载数据可能需要大部分时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2011-03-23
      相关资源
      最近更新 更多