Здравствуйте, Sinclair, Вы писали:
S>Коллеги, кто уже гонял сабж в продакшн или достаточно внимательно в тестах?
S>Хочу понять, каковы накладные расходы.
Легко получить накладные расходы бенчмарками, да
1. если под await сеть, то сравнить await foreach и foreach для TcpListener на localhost и 127.0.0.1. разница будет потому что MTA разный
2. если под await диск, то сравнить await foreach и foreach для RAM-диска или оптан диска. На всякий случай упомяну что асинхронная работа в FileStream сильно переписана в 6м Core. В 5м много чего в Async-методах всё еще реализовано абы как (синхронно)
3. если под await потоки (например ManualResetEventSlim.Wait — самая быстрая реализация) то я уже делился задержками. Они большие: 1 микросекунда в Core на Windows, 2 — Core на линукс, 4 — на NetFramework под Windows, и 16 — в моно. на кажую итерацию. Это всё на Intel Xeon 6го поколения.
4й вариант — сравнить в Dapper await foreach и foreach. Тут разница конечно сильно большая будет в SQLite и MS SQL Shared Memory и MS SQL TCP IP. Вобщем работы много.