как добавляет под оптимизацией капота, но он не может объяснить, почему это
Меня удивляет, как много людей считают, что асинхронность всегда лучший выбор, но они не могут сказать, почему. Это большое недоразумение в сообществе. К сожалению, Microsoft как бы подталкивает это понятие. Я полагаю, что они делают это, чтобы упростить руководство.
Async IO помогает в двух вещах: 1) сохранять потоки 2) упростить приложения с графическим интерфейсом, избавившись от управления потоками.
Большинство приложений полностью не зависит от количества запущенных потоков. Для этих приложений асинхронный ввод-вывод добавляет нулевую пропускную способность, требует дополнительных ресурсов процессора и усложняет код. Я знаю, потому что я измерил пропускную способность и масштабируемость. Я работал над многими приложениями.
В частности, сам IO не становится быстрее. Единственное, что меняется, - это способ инициирования и завершения вызова. Здесь вообще нет оптимизации ввода-вывода.
Используйте async, когда вам это удобно или у вас есть доказательства того, что количество запущенных потоков будет проблемой. Не используйте его по умолчанию, поскольку производительность будет ниже. Существуют дополнительные способы добавления ошибок. Инструменты хуже, код длиннее, отладка и профилирование труднее.
Конечно, нет ничего плохого в том, чтобы использовать его, если это правильный инструмент для работы.