Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DevOK.Repository
- асинх против синх
- Когда создавалась библиотека, обнаружились асинхронные варианты всех методов контекста.
- И тут я загорелся - давайте активно их использовать!
- Ведь контекст не сразу возвращает данные. Может тупануть - а пока тупит пусть тот же поток занимается чем-то полезным.
- Нет. Я упустил знания из гайдлайна который читал до того.
- И его основная мысль: "асинхронная операция априори работает дольше чем синхронная".
- Казалось бы, пять букв, какой вред нанесут? Рассмотрим на примере двух операций
- О1: простая вставка, занимает полсекунды
- О2: сложная операция, занимает три секунды.
- Хочется обе обернуть в асинх, это ведь так просто!
- А подвох в том что О1 что синхронно что асинхронно будет работать одинаково. Но в асинхронном варианте будут задействованы ресурсы. Куча. Операционка выделит поток. TPL будет им управлять. Назначит ему задание - чтоб обработал результат асинхронной операции.
- Это дорого стоит.
- И в случае О1, не успели TPL и ОС создать вам все ресурсы - как они уже не нужны. Какие-то полсекунды! Зачем мы плодили поток - спросят TPL и ОС.
- В случае О2 выйгрыш от асинха более очевиден. Лучше заплатить немного ресурсами, чтоб, скажем, две с половиной секунд (или сколько там надо времени на развертывание асинха) были потрачены с пользой.
- Мораль - нет, не надо спамить асинх. Только в реально тяжелых операциях. И/или часто используемых методах (bottleneck)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement