Re[16]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 12:28
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Получается криво — внутри метода много однотипных оберток. Можно сделать все проще.

S>Угу нужно пользоваться нормальными библиотеками. Которые не совмещают работу с потоками и задачами

Это две разные библиотеки. Она через потоки, другая через задачи. И вызывать их нужно в одном методе несколько раз. Оборачивать каждый вызов обычного метода в Task.Factory.StartNew — не красиво.
Re[17]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.09.21 12:30
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Получается криво — внутри метода много однотипных оберток. Можно сделать все проще.

S>>Угу нужно пользоваться нормальными библиотеками. Которые не совмещают работу с потоками и задачами

S>Это две разные библиотеки. Она через потоки, другая через задачи. И вызывать их нужно в одном методе несколько раз. Оборачивать каждый вызов обычного метода в Task.Factory.StartNew — не красиво.

Сделай класс наследник и добавь асинхронные методы через LongRunning или через SG
и солнце б утром не вставало, когда бы не было меня
Отредактировано 29.09.2021 12:31 Serginio1 . Предыдущая версия .
Re[18]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 12:36
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Сделай класс наследник и добавь асинхронные методы через LongRunning или через SG


Т.е. вы таки весь мир хотите переделать на async? Для каждой библиотеки делать со-библиотеку наследника/обертку с асинхронной версией?

А нельзя ли без этой лишней работы?
Re[19]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.09.21 12:42
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Сделай класс наследник и добавь асинхронные методы через LongRunning или через SG


S>Т.е. вы таки весь мир хотите переделать на async? Для каждой библиотеки делать со-библиотеку наследника/обертку с асинхронной версией?


S>А нельзя ли без этой лишней работы?

Я предлагаю использовать нормальные асинхронные библиотеки, а не скрещивать работу с потоками и задачами.
Да для работы с асинхронным кодом должны быть и асинхронные библиотеки. На Windows Phone изначально не было методов с ожиданием выполнения другого потока или ожидание IO.
Если метод долгий то его нужно выделять в LongRunning
и солнце б утром не вставало, когда бы не было меня
Re[20]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 13:06
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Я предлагаю использовать нормальные асинхронные библиотеки, а не скрещивать работу с потоками и задачами.


Не все библиотеки имеют асинхронную версию методов — это просто факт, который мы изменить не можем. Неужели единственный вариант — добавить обертку:

await Task.Factory.StartNew(() =>
                {
                    // ...
                }, TaskCreationOptions.LongRunning);



для каждого метода?

S>Если метод долгий то его нужно выделять в LongRunning


Почему нельзя 1 раз указать этот LongRunning?
Re[21]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.09.21 13:17
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Почему нельзя 1 раз указать этот LongRunning?

Можешь. Просто если метод быстрый (который может и проинлайниться), то зачем запускать отдельный поток?
Смысл асинхронного кода как раз в том, что есть немного синхронного кода, но большая часть кода выполняется в другом процессе (базы данных, HTTP сервера,TCP)
либо IO. Длинные методы как правило распараллеливаются и можно отдельно выделять LongRunning но таких методов немного
и солнце б утром не вставало, когда бы не было меня
Отредактировано 29.09.2021 13:19 Serginio1 . Предыдущая версия .
Re[22]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 13:23
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Почему нельзя 1 раз указать этот LongRunning?

S> Можешь.

Каким образом?
Re[3]: [Этюд] - синхронный vs асинхронный
От: paradok  
Дата: 29.09.21 13:43
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Конечно итоговое исполнение всех задач.


да, не ожидал, действительно тормоз, ... получается async какие-то ущербные?
И что делать?
Re[4]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 14:06
Оценка:
Здравствуйте, paradok, Вы писали:

P>да, не ожидал, действительно тормоз, ... получается async какие-то ущербные?

P>И что делать?

Это мы тут и обсуждаем

Пока ответ не очевиден.
Re[23]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.09.21 14:11
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Почему нельзя 1 раз указать этот LongRunning?

S>> Можешь.

S>Каким образом?

Заверни весь синхронный код в Task с LongRunning
и солнце б утром не вставало, когда бы не было меня
Re[24]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 14:13
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>>Каким образом?

S> Заверни весь синхронный код в Task с LongRunning

Если вызовов синхронных методов много (чередуются с async) и как долго они исполняются — не определено (зависит от данных) — предлагаете заворачивать каждый в отдельности? Как завернуть 1 раз для всех — вот в чем вопрос.
Отредактировано 29.09.2021 14:14 Shmj . Предыдущая версия .
Re[25]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 29.09.21 14:22
Оценка: :)
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>>Каким образом?

S>> Заверни весь синхронный код в Task с LongRunning

S>Если вызовов синхронных методов много (чередуются с async) и как долго они исполняются — не определено (зависит от данных) — предлагаете заворачивать каждый в отдельности? Как завернуть 1 раз для всех — вот в чем вопрос.

Ждать развития PGO, аналогом HotSpot
https://github.com/dotnet/runtime/blob/main/docs/design/features/DynamicPgo.md
и солнце б утром не вставало, когда бы не было меня
Re[26]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 29.09.21 15:29
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Ждать развития PGO, аналогом HotSpot

S>https://github.com/dotnet/runtime/blob/main/docs/design/features/DynamicPgo.md

Есть вариант как решить сегодня. Думайте.
Re: [Этюд] - синхронный vs асинхронный
От: Ночной Смотрящий Россия  
Дата: 30.09.21 06:48
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Что-то давно этюдов не было. Не знаю тянет ли это на этюд, но попробую.


У тебя какая то фигня написана. Ты ни там ни там не ждешь завершения задач и непонятно что измеряешь. Лень экспериментировать, но разница, скорее всего, связана с настройкой IsBackground потоков.
Тебе надо что то вроде:
await Enumerable
    .Range(1000)
    .Select(i => Task.Factory.StartNew(...))
    .WhenAll();
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[2]: [Этюд] - синхронный vs асинхронный
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.09.21 06:55
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

Там проблема в Thread.Sleep(1000);
http://rsdn.org/forum/dotnet/8102654.1
Автор: Serginio1
Дата: 29.09.21
и солнце б утром не вставало, когда бы не было меня
Re[2]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 30.09.21 07:33
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>У тебя какая то фигня написана. Ты ни там ни там не ждешь завершения задач и непонятно что измеряешь. Лень экспериментировать, но разница, скорее всего, связана с настройкой IsBackground потоков.


Там по завершении задачи на экран выводится номер задачи. Синхронная версия отрабатывает 1-2 сек., асинхронная 1-2 мин.

Проверь — будешь удивлен.
Re[3]: [Этюд] - синхронный vs асинхронный
От: alexander_r  
Дата: 30.09.21 09:27
Оценка:
Здравствуйте, Shmj, Вы писали:

S>...Синхронная версия отрабатывает 1-2 сек., асинхронная 1-2 мин.

а как вы время замеряете, покажите весь код??
Re[4]: [Этюд] - синхронный vs асинхронный
От: paradok  
Дата: 30.09.21 09:56
Оценка: :)
Здравствуйте, alexander_r, Вы писали:

_>Здравствуйте, Shmj, Вы писали:


S>>...Синхронная версия отрабатывает 1-2 сек., асинхронная 1-2 мин.

_>а как вы время замеряете, покажите весь код??

там же номер запуска — т.е. когда появляется на экране 999 тогда и конец.
ну или когда останавливается визуально мельтешение цифер в консоли.

Для усиления эффекта можно задержку не 1 сек а 10 сек сделать

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

У меня начинаются тормоза с i=10 ! не 1000 а с 10 !!
Это вообще крест а асинках — их нельзя юзать если может вызваться больше 10 обработчиков одновременно?
Отредактировано 30.09.2021 10:06 paradok . Предыдущая версия .
Re[4]: [Этюд] - синхронный vs асинхронный
От: Shmj Ниоткуда  
Дата: 30.09.21 10:02
Оценка:
Здравствуйте, alexander_r, Вы писали:

S>>...Синхронная версия отрабатывает 1-2 сек., асинхронная 1-2 мин.

_>а как вы время замеряете, покажите весь код??

Там и так все понятно, разница на порядки. Ну могу дописать ожидание завершения всех задач, но это ничего не изменит.
Re[5]: [Этюд] - синхронный vs асинхронный
От: paradok  
Дата: 30.09.21 10:08
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, alexander_r, Вы писали:


S>>>...Синхронная версия отрабатывает 1-2 сек., асинхронная 1-2 мин.

_>>а как вы время замеряете, покажите весь код??

S>Там и так все понятно, разница на порядки. Ну могу дописать ожидание завершения всех задач, но это ничего не изменит.


да, сделай ! там еще можно будет посмотреть зависимость от задержки, при 10 сек вообще кранты наступают системе.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.