AsParallel с классической ADO.NET - PullRequest
       11

AsParallel с классической ADO.NET

0 голосов
/ 01 октября 2010

Мне интересно, если бы использование 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?

1 Ответ

1 голос
/ 01 октября 2010

Я не думаю, что класс SqlConnection является поточно-ориентированным, поэтому вам определенно потребуется создать отдельный экземпляр SqlConnection для каждой из задач.Тогда я думаю, что это может ускорить загрузку данных (но это во многом будет зависеть от механизма базы данных).

Ваши комментарии в первом фрагменте предполагают, что последняя операция занимает большую часть времени.Если это значительно медленнее, чем первые две операции, то нет смысла запускать три параллельно (потому что это не будет быстрее, чем время, необходимое для выполнения последней задачи).

Распараллеливание созданияиз трех объектов может быть проще, но это зависит от того, выполняете ли вы какую-либо сложную обработку в трех методах.Если нет, то я предполагаю, что загрузка данных из базы данных, вероятно, занимает большую часть времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...