Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 И снова асинхронность  [new]
SergiiW
Member

Откуда: СССР
Сообщений: 70
Добрый день всем!
Есть синхронный процес, который обращается к разным БД для получения данных - GetData.
Для уменьшения времени получения данных я использую несколько задач и паралельно их запускаю
var tasks = new List<Threading.Tasks.Task>();
for (var i = 1; i <= 10; i++)
     tasks.Add(Threading.Tasks.Task.Factory.StartNew(LocationSet));

Threading.Tasks.Task.WaitAll(tasks.ToArray());


Вопрос. Если сделать процесс GetData асинхронным получу ли я какую-то выгоду в быстродействии?
Основное время (99,9%) тратится на получения данных ExecuteReader. Если заменить его на ExecuteReaderAsync?
Насколько я понимаю, никакого прироста скорости не должно быть? Или я ошибаюсь?
19 окт 21, 12:03    [22385413]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
vb_sub
Member

Откуда:
Сообщений: 983
Прироста в скорости не будет.
19 окт 21, 12:08    [22385415]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4283
SergiiW,

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

Threading.Tasks.Task.Factory.StartNew - уже 100500 лет как устарело
19 окт 21, 12:08    [22385416]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
SergiiW
Member

Откуда: СССР
Сообщений: 70
Roman Mejtes
SergiiW,
Threading.Tasks.Task.Factory.StartNew - уже 100500 лет как устарело

Странно, для net 5 указано его использовать https://docs.microsoft.com/ru-ru/dotnet/api/system.threading.tasks.task.waitall?view=net-5.0
А что сейчас вместо него используют?

Спасибо, увидел Threading.Tasks.Task.Run

Сообщение было отредактировано: 19 окт 21, 12:17
19 окт 21, 12:15    [22385418]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
vb_sub
Member

Откуда:
Сообщений: 983
SergiiW,
обычно его и по дефолту используют, но не стоит ожидать от него каких-либо космических результатов.
19 окт 21, 12:25    [22385424]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
SergiiW
Member

Откуда: СССР
Сообщений: 70
vb_sub, спасибо!
19 окт 21, 12:52    [22385437]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
Andromeda777
Member

Откуда: Петербург
Сообщений: 68
SergiiW,

Практически однозначно будет падение перфоманса. Так как создание нового таска - это затратная операция. В асинхронности дело обычно не в быстродействии.
19 окт 21, 15:58    [22385536]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6257
SergiiW
А что сейчас вместо него используют?

Спасибо, увидел Threading.Tasks.Task.Run

Это не "вместо", у StartNew и Run разная специфика.
19 окт 21, 17:00    [22385562]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 4283
я к тому, что если автор обращается в базу данных, то все асинхронные вызовы там есть из коробки, хотя не факт, конечно
19 окт 21, 19:14    [22385608]     Ответить | Цитировать Сообщить модератору
 Re: И снова асинхронность  [new]
hVostt
Member

Откуда:
Сообщений: 19352
SergiiW
Насколько я понимаю, никакого прироста скорости не должно быть? Или я ошибаюсь?


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

А так-то, кто мешает провести эксперименты?
29 окт 21, 04:50    [22389706]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить