代码之家  ›  专栏  ›  技术社区  ›  gsharp

阿斯帕莱尔经典ADO.NET

  •  0
  • gsharp  · 技术社区  · 14 年前

    我想知道是否使用 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个并行任务)运行,会提高性能吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Tomas Petricek    14 年前

    我不这么认为 SqlConnection 类是线程安全的,所以您肯定需要创建一个单独的 连接对象

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