Advertisement
GrayMP

DevOK. async vs await. enlightment

May 21st, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. DevOK.Repository
  2. асинх против синх
  3.  
  4. Когда создавалась библиотека, обнаружились асинхронные варианты всех методов контекста.
  5. И тут я загорелся - давайте активно их использовать!
  6. Ведь контекст не сразу возвращает данные. Может тупануть - а пока тупит пусть тот же поток занимается чем-то полезным.
  7. Нет. Я упустил знания из гайдлайна который читал до того.
  8. И его основная мысль: "асинхронная операция априори работает дольше чем синхронная".
  9.  
  10. Казалось бы, пять букв, какой вред нанесут? Рассмотрим на примере двух операций
  11. О1: простая вставка, занимает полсекунды
  12. О2: сложная операция, занимает три секунды.
  13.  
  14. Хочется обе обернуть в асинх, это ведь так просто!
  15. А подвох в том что О1 что синхронно что асинхронно будет работать одинаково. Но в асинхронном варианте будут задействованы ресурсы. Куча. Операционка выделит поток. TPL будет им управлять. Назначит ему задание - чтоб обработал результат асинхронной операции.
  16. Это дорого стоит.
  17.  
  18. И в случае О1, не успели TPL и ОС создать вам все ресурсы - как они уже не нужны. Какие-то полсекунды! Зачем мы плодили поток - спросят TPL и ОС.
  19.  
  20. В случае О2 выйгрыш от асинха более очевиден. Лучше заплатить немного ресурсами, чтоб, скажем, две с половиной секунд (или сколько там надо времени на развертывание асинха) были потрачены с пользой.
  21.  
  22. Мораль - нет, не надо спамить асинх. Только в реально тяжелых операциях. И/или часто используемых методах (bottleneck)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement