Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF6 ToList() и ToListAsync() время выполнения / 22 сообщений из 22, страница 1 из 1
07.11.2018, 14:08
    #39729313
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
WPF 4.5, EF6.2.0 code first, Sql Server 2012.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
private void GetDataToList()
{
  Stopwatch watch = new Stopwatch();
  using (var ctx = new Context())
  {
    watch.Start();
    dg.ItemsSource = ctx.Items.AsNoTracking().ToList();
    watch.Stop();
    MessageBox.Show(watch.Elapsed.ToString());
  }
}

private async void GetDataTaskRun()
{
  Stopwatch watch = new Stopwatch();
  using (var ctx = new Context())
  {
    watch.Start();
    dg.ItemsSource = await Task.Run(() => ctx.Items.AsNoTracking().ToList());
    watch.Stop();
    MessageBox.Show(watch.Elapsed.ToString());
  }
}

private async void GetDataToListAsync()
{
  Stopwatch watch = new Stopwatch();
  using (var ctx = new Context())
  {
    watch.Start();
    dg.ItemsSource = await ctx.Items.AsNoTracking().ToListAsync();
    watch.Stop();
    MessageBox.Show(watch.Elapsed.ToString());
  }
}


Выборка из таблицы с 1млн строк:
ToList() ~ 26сек
Task.Run ToList() ~ 29сек
ToListAsync() ~ 81сек
Почему такая разница между GetDataTaskRun() и GetDataToListAsync()? Подскажите, как работать с async в EF6?
...
Рейтинг: 0 / 0
07.11.2018, 14:24
    #39729323
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mПодскажите, как работать с async в EF6?пагинация.
...
Рейтинг: 0 / 0
07.11.2018, 19:41
    #39729550
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Petro123sa13mПодскажите, как работать с async в EF6?пагинация.

Это не выход для меня. Что не так с ToListAsync()?
...
Рейтинг: 0 / 0
07.11.2018, 19:42
    #39729552
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Профайлером SQL смотрели? Запросы отличаются? Время запроса то же самое?
...
Рейтинг: 0 / 0
07.11.2018, 20:42
    #39729572
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mЭто не выход для меня.Конечно. Меня лимон смотрят через пол сек. А у тебя пол минуты пялятся в пустой экран.
...
Рейтинг: 0 / 0
07.11.2018, 21:06
    #39729578
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.ProПрофайлером SQL смотрели? Запросы отличаются? Время запроса то же самое?

В профайлере запросы одинаковые. Этот же запрос через Management studio выполняется ~50 сек
...
Рейтинг: 0 / 0
07.11.2018, 21:07
    #39729582
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mВ профайлере запросы одинаковые. Этот же запрос через Management studio выполняется ~50 секЧерез студию - пофиг.
Меня интересует - время выполнения трех запросов из вышеприведенного теста по профайлеру одинаковое?
...
Рейтинг: 0 / 0
07.11.2018, 21:09
    #39729583
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Petro123sa13mЭто не выход для меня.Конечно. Меня лимон смотрят через пол сек. А у тебя пол минуты пялятся в пустой экран.

Через пол секунды смотрят первые 1000 строк?
...
Рейтинг: 0 / 0
07.11.2018, 21:10
    #39729584
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mPetro123пропущено...
Конечно. Меня лимон смотрят через пол сек. А у тебя пол минуты пялятся в пустой экран.


Через пол секунды смотрят первые 1000 строк?Забей.
Petro123FloodFactory.Instance.AutoReply()
...
Рейтинг: 0 / 0
07.11.2018, 21:20
    #39729585
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.Prosa13mВ профайлере запросы одинаковые. Этот же запрос через Management studio выполняется ~50 секЧерез студию - пофиг.
Меня интересует - время выполнения трех запросов из вышеприведенного теста по профайлеру одинаковое?

Время одинаковое перепроверил несколько раз
...
Рейтинг: 0 / 0
07.11.2018, 21:23
    #39729586
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mВремя одинаковое перепроверил несколько раз
тогда надо заглянуть в исходник ToListAsync и проанализировать его.
...
Рейтинг: 0 / 0
07.11.2018, 21:33
    #39729590
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Хм. Там итерации выполняются с помощью ForEachAsync, который на каждую итерацию создает отдельную таску, да еще без ConfugireAwait(false)
Похоже, много времени уходит на накладные расходы.
...
Рейтинг: 0 / 0
07.11.2018, 21:58
    #39729594
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mЧерез пол секунды смотрят первые 1000 строк?в настройках сколько им удобно. Неужели не видел настройку в любом инет магазине: Показывать столько то строк.
...
Рейтинг: 0 / 0
07.11.2018, 22:34
    #39729606
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Petro123в настройках сколько им удобно. Неужели не видел настройку в любом инет магазине: Показывать столько то строк.Кто тебе с казал, что это вообще сайт, что эти строки отображдаются пользователю? Ты мыслишь только с высоты своего опыта (два вершка) и не можешь придумать иных юзеркейсов.


К автору: тем не менее - тащить миллион записей на клиента требуется крайне редко, действительно неляз обойтись обработкой на сервере? Или это просто тестовая задача для проверки производительности?
...
Рейтинг: 0 / 0
07.11.2018, 22:39
    #39729608
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.ProКто тебе с казал, что это вообще сайт, что эти строки отображдаются пользователю? Ты мыслишь только с высоты своего опыта (два вершка) и не можешь придумать иных юзеркейсов.у меня по шахматам разряд))
...
Рейтинг: 0 / 0
07.11.2018, 22:48
    #39729615
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.ProPetro123в настройках сколько им удобно. Неужели не видел настройку в любом инет магазине: Показывать столько то строк.Кто тебе с казал, что это вообще сайт, что эти строки отображдаются пользователю? Ты мыслишь только с высоты своего опыта (два вершка) и не можешь придумать иных юзеркейсов.


К автору: тем не менее - тащить миллион записей на клиента требуется крайне редко, действительно неляз обойтись обработкой на сервере? Или это просто тестовая задача для проверки производительности?

После перевода EF запросов на async стал замечать потерю быстродействия. Таблица с миллионом записей взята для тестирования. Пока остановился на Task.Run(...).ConfigureAwait(false), время выполнения близко к ToList().
Спасибо Вам за помощь.
...
Рейтинг: 0 / 0
07.11.2018, 22:48
    #39729616
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Petro123,

нулевой?
...
Рейтинг: 0 / 0
07.11.2018, 22:55
    #39729624
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mПосле перевода EF запросов на async стал замечать потерю быстродействия. Таблица с миллионом записей взята для тестирования. Пока остановился на Task.Run(...).ConfigureAwait(false), время выполнения близко к ToList().
Спасибо Вам за помощь.Глянул в EF Core - навскидку там иначе, возможно такого косяка нет
...
Рейтинг: 0 / 0
07.11.2018, 23:14
    #39729629
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
ViPRosPetro123,
нулевой?ты программист? Ты че тут делаешь?
...
Рейтинг: 0 / 0
07.11.2018, 23:18
    #39729631
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.Proтакого косяка нетTask. Run подойдет к любым вариантам. К бабке не ходи.
...
Рейтинг: 0 / 0
08.11.2018, 01:13
    #39729666
sa13m
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
Shocker.Prosa13mПосле перевода EF запросов на async стал замечать потерю быстродействия. Таблица с миллионом записей взята для тестирования. Пока остановился на Task.Run(...).ConfigureAwait(false), время выполнения близко к ToList().
Спасибо Вам за помощь.Глянул в EF Core - навскидку там иначе, возможно такого косяка нет

В EF Core такой же долгий ToListAsync()
...
Рейтинг: 0 / 0
08.11.2018, 07:29
    #39729710
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EF6 ToList() и ToListAsync() время выполнения
sa13mToListAsyncи не во всех базах это есть.
Свой пул потоков будет по практичнее.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF6 ToList() и ToListAsync() время выполнения / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]