翻译自一篇博文,原文:The performance characteristics of async methods in C#
异步系列
在前两篇中,我们介绍了C#中异步方法的内部原理,以及C#编译器提供的可扩展性从而自定义异步方法的行为。今天我们将探讨异步方法的性能特点。
正如第一篇所述,编译器进行了大量的转换,使异步编程体验非常类似于同步编程。但要做到这一点,编译器会创建一个状态机实例,将其传递给异步方法的builder,然后这个builder会调用task awaiter等。很明显,所有这些逻辑都需要成本,但是需要付出多少呢?