Entity Framework Почему асинхронные методы EF медленные
Почему асинхронные методы EF работают медленнее, чем не асинхронные?
Почему асинхронная операция Entity Framework занимает слишком много времени по сравнению с не асинхронной операцией?
StackOverflow Вопросы, связанные с
Ответ
Асинхронная версия всегда будет медленнее, чем синхронная версия, когда нет параллелизма.
- Он выполняет ту же работу, что и не асинхронная версия, но с небольшим объемом служебной информации, добавленной для управления асинхронностью.
- Каждый запрос будет медленнее, но если вы сделаете 1000 запросов одновременно, асинхронная реализация сможет обрабатывать их все быстрее (по крайней мере, при определенных обстоятельствах).
- Это происходит потому, что асинхронное решение позволяет потоку, который был выделен для обработки запроса, возвращаться в пул и обрабатывать другие запросы, тогда как синхронное решение заставляет поток сидеть там и ничего не делать, пока он ожидает завершения асинхронной операции.
- Существуют накладные расходы в структурировании программы таким образом, что позволяет освободить поток для выполнения другой работы, но преимущество заключается в способности этого потока выполнять другую работу.
- Если у вашей программы нет другой работы для этого потока, то это в конечном итоге будет чистый убыток.
- Async / await экономит время только тогда, когда задание привязано к вводу / выводу. Работа любого приложения с привязкой к процессору приведет к снижению производительности.
- Это потому, что если у вас есть несколько вычислений, которые занимают 10 секунд на вашем процессоре (ах), то добавление async / await добавит X дополнительного времени к этим 10 секундам для создания задач, планирования и синхронизации, чтобы выполнить работу.
- Производительность часто падает из-за введения async / await не так велика, особенно если вы стараетесь не переусердствовать.