|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6.
скажите пожалуйста есть ли смысл в асинхронности в этом коде? мне кажется что нет смысла только память грузить, так как ретурн произайдёт только после того как отработает SendAnalysisAsync. или я ошиюаюсь((( ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 00:41 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 08:36 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, Если это долгая операция - то смысл есть(не замораживать интерфейс). А судя по всему, это долгая операция. Асинхронность нужна когда параллельность важнее простоты и имеет смысл. Последовательный код нужен тогда, когда простота кода важнее производительности. Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:35 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_BJunior1997, Если это долгая операция - то смысл есть(не замораживать интерфейс). А судя по всему, это долгая операция. Асинхронность нужна когда параллельность важнее простоты и имеет смысл. Последовательный код нужен тогда, когда простота кода важнее производительности. Если с введением параллельности ты ускоришь выполнение метода с 100мс до 90мс - то вряд ли это нужно. Да. но в данном примере в чём смысл return? результат всё равно вернётся же через ннн-е количесво времени. Т.е если бы это было Winforms или WPF то понятно поток основной не блокируется и мы спокойно получннеые данные в UI А тут основной паток не блокируется... запрос с клиента отработал но ответа не плолучил? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:43 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:47 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:53 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997handmadeFromRuJunior1997, давай попробую подвести тебя к ответу. в чем смысл асинхроности? Не блокировать основной поток. если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:55 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttJunior1997пропущено... Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. так в том и дело в данном примере ничего другого Action не делает. Поэтому возникли вопросы ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 09:56 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuJunior1997пропущено... Не блокировать основной поток. если идет вопрос о сервере и асп приложение то вызов в коде асинхроного вызова на долгую операцию даст асп потоку что был использован для запроса сделать полезную работу по обработке еще одно реквеста к примеру. Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:00 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997Да речь идёт про ASP, А что тогда с результатом? ПОлучается так что юзер открыл страницу. она не блокируется срендерилась быстро очень. но данных на ней нет и юзер переходит а другую страницу думая что это ошибка? ты мыслишь очень узко. у тебя может 10к юзеров онлайн и делать свои запросы к серваку. ты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. поэтому она оверхед на быстрой операции. время выполнение не улушиться конечно же ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:05 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRu, Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:19 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Junior1997, How Requests Are Processed by the Thread Pool In general, use synchronous methods for the following conditions: автор- The operations are simple or short-running. - Simplicity is more important than efficiency. - The operations are primarily CPU operations instead of operations that involve extensive disk or network overhead. Using asynchronous action methods on CPU-bound operations provides no benefits and results in more overhead. In general, use asynchronous methods for the following conditions: автор- You're calling services that can be consumed through asynchronous methods, and you're using .NET 4.5 or higher. - The operations are network-bound or I/O-bound instead of CPU-bound. - Parallelism is more important than simplicity of code. - You want to provide a mechanism that lets users cancel a long-running request. - When the benefit of switching threads outweighs the cost of the context switch. In general, you should make a method asynchronous if the synchronous method waits on the ASP.NET request thread while doing no work. By making the call asynchronous, the ASP.NET request thread is not stalled doing no work while it waits for the web service request to complete. - Testing shows that the blocking operations are a bottleneck in site performance and that IIS can service more requests by using asynchronous methods for these blocking calls. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:21 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:26 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_BhandmadeFromRuты должен понимать что 1 запрос к серваку это 1 запрос из трид пула. асинхроность позволить использовать поток где то еще пока тебе не пришел результат. Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ага hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:42 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVostthandmadeFromRu, Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. А если не сразу. Мне вот не понятно. Получается так что если запрос отработал пришёл респонс.... данных нет. и пока данных нет то юзер может запрашивать другие данные с сервера? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Valery_B, Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 10:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuhVosttНу не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) во-первых, в asp.net core отказались от контекста синхронизации, что конечно приводит к отсутствию возможности хранить принципала в контексте потока. во-вторых, если асинхронный метод возвращает завершённую задачу никакой упаковки и работы с потоками нет, всё выполняется синхронно, как вызов обычного метода. кое какой оверхед при этом конечно есть, чуть больше кода на реализацию state machine, но совсем не критично. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 12:46 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
handmadeFromRuValery_Bпропущено... Правильно ли я понял, что в основном, это для освобождения трэда из пула IIS ? Точнее - это один из плюсов из плюсов асинхронности, в случае если это метод контроллера ASP NET приложения ? ага hVostt Ну не такой уж оверхед, если асинк операция сразу вернёт выполненную задачу, вся операция выполнится синхронно. разве? упаковка и передача из одного потока в другой и назад, восстановления контекста синхронизации- все таки мне кажется все равно дополнительные время и память. (именно про быстрые результаты) для таких задач(быстрых операций) нужно использовать ValueTask. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 14:15 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttJunior1997пропущено... Не блокировать основной поток. Значит поток сможет пока обработать другие запросы. Поток это довольно ценный и исчерпаемый ресурс. Ето если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 17:47 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
vb_subдля таких задач(быстрых операций) нужно использовать ValueTask. классическое (уже) заблуждение. профит от ValueTask можно получить на очень очень узком спектре операций, которые ещё ко всему прочему надо выявить и протестировать. на деле получается обратная ситуация. обычно не нужно использовать ValueTask и тем более думать, что это решение проблемы с производительностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 18:44 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 18:48 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
hVosttHexag0vЕто если производительность уперается в потоки сервера, а если в скажем узкое место это база (такое тоже бывает), то мы нагрузим ее еще больше. Получится обратный эффект. это не совсем корректный взгляд на вещи. во-первых, перед базой может стоять кеш в виде редиски, тоже асинк, во-вторых проблема узкого места в БД никуда не уйдёт и без потоков сервера, так как способность обрабатывать все запросы решается масштабированием. а асинк снижает потребность в таком решении. Выгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2019, 20:13 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? Глупости какие-то говорите. Это не коррелирующие понятия. Если у вас узкое звено это дб сервер, то надо решать эту проблему, при чём тут http сервер? Или вы предлагаете пользователям ловить 503, лишь бы бд сервер не страдал? Какой посыл-то? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 00:07 |
|
Есть ли смысл в асинхронности
|
|||
---|---|---|---|
#18+
Hexag0vВыгрузить в редис не всегда вариант, есть постоянные изменения и просчеты относительно актуальных данных. Встанет вопрос, что лучше масштабировать http server или db server? Если вы будете масштабировать http server, то вы обратно придёте к "узкое место это база (такое тоже бывает)... мы нагрузим ее еще больше". То есть к тому, о чём пишет hVostt: надо решать проблему с db server ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2019, 09:21 |
|
|
start [/forum/topic.php?fid=18&msg=39845689&tid=1354925]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 167ms |
0 / 0 |