AsParallel 与经典 ADO.NET

发布于 2024-09-25 09:40:47 字数 563 浏览 3 评论 0原文

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

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

假设在同一个 SqlConnection 下有 3 个 SqlCommand ,如下所示(伪代码):

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

然后创建 3 个 List保存所有数据的对象(DTO)的数量:

MakeRequest()
MakeRequestAnswers()
MakeOtherStuffList()

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

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

I'm wondering if using by AsParallel would speed up my code in the way we use it.

I write here some very simplified pseudo code, to illustrate what I have in mind:

Let's say 3 SqlCommand under the same SqlConnection like this (pseudo code):

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

then create 3 List of Objects (DTO's) that holds all that data:

MakeRequest()
MakeRequestAnswers()
MakeOtherStuffList()

Would it improve the performance if i would run that code as parallel (3 Parallel Tasks) ?

I know there are much if and whens. But is it worth it to write such code for Parallel?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

離人涙 2024-10-02 09:40:47

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

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

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

I don't think that SqlConnection class is thread-safe, so you would definitely need to create a separate instance of SqlConnection for each of the tasks. Then I think it might speed up the loading of data (but that would largely depend on the database engine).

Your comments in the first snippet suggest that the last operation takes the most of the time. If that is significantly slower than the first two operations, then there is no point it running the three in parallel (because it wouldn't be faster than the time needed to run the last task).

Parallelizing the creation of the three objects could be easier, but it depends on whether you're doing any complicated processing in the three methods. If no, then I'd guess that loading data from the database probably takes most of the time.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文