на сегодняшний день, многопоточность и паралеллизм в аппликейшен логике это чаще сложно чем нет и в разных языках выражается разными костылями и иными gotcha (привет defer из Go или анальная боль асинка в Расте, или такие же Future в Swift'е), да использовать авэйт направо и налево плохо и генерируется куча мусорного кода из стейт машин и континюейшенов
однако
для синхронно выполняемого кода зачастую потери минимальны и с последними версиями стало намного лучше с аллокациями (иногда их нет) и накладными расходами на перформанс, плюс это такая часть языка где можно вносить большие изменения сохрянняя совместимость со спецификациями, как я понимаю значительную часть покращень делает сам RyuJIT (мои знания заканчиваются на IL, за ассембли не поясню сорян)