V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hez2010
V2EX  ›  C#

.NET 换新的异步编程模型了,性能很强

  •  
  •   hez2010 · 2 天前 via Android · 813 次点击

    .NET 现在正在把 async/await 从原来的编译器实现改成 runtime 直接支持新的 async 调用约定,带来了非常大的性能提升,不过代码的写法倒是没有改变,但底层改变很大。

    具体介绍可以参考: https://zhuanlan.zhihu.com/p/1951804339745195151

    11 条回复    2025-09-19 22:07:12 +08:00
    geelaw
        1
    geelaw  
       2 天前
    省流版技术总结:在 IL 层面引入异步的概念,于是编译器不用把代码切成很多块儿(这会导致 JIT 很难掌握不变式,于是难以优化),于是 JIT 和运行时可以看到更多信息,从而优化异步性能。

    向楼主提问:这套 ABI 是否有“反哺” iterator block 的可能/打算?
    dcdlove
        2
    dcdlove  
       1 天前
    怀念 ,由于脱钩搞信创 国内 C# 几乎被屠杀殆尽
    klo424
        3
    klo424  
       1 天前
    @dcdlove C# 信创没问题啊
    lisxour
        4
    lisxour  
       1 天前
    @klo424 C# 信创是没问题,但是要求信创的一般指定 java ,哈哈嗝
    june4
        5
    june4  
       1 天前
    国内 .net 被打死了我是喜闻乐见的
    klo424
        6
    klo424  
       1 天前
    @lisxour 那是看销售关系的吧。指定之前就已经定好中标人了。

    @june4 被打死了好,这样我就可以在一个公司干到老了。
    dcdlove
        7
    dcdlove  
       1 天前
    nebkad
        8
    nebkad  
       1 天前
    我点句难听点的话,Rust 的 async/await 写起来虽然也不见得比 C# 的好到哪去,
    但是等待异步事件不需要堆分配真的吊打 C#。
    C# 吃了这么多年的老本,难道就没有考虑过优化这一点吗?
    显然是压力不够并且保守群体太大,改不动。
    现在微软已经重新走入堕落螺旋,我不相信 Runtime async 会有一个好的结果。
    原因在于我上面说的,C# 现在连最有创造力的游戏开发群体都抓不住,
    指望一堆吃老本的会用主动用新 runtime ,实在是过于乐观了。
    hez2010
        9
    hez2010  
    OP
       1 天前 via Android
    @nebkad 不知道你在说什么,runtime async 等待异步事件还真就可以不需要堆分配,不然文中递归调用 FibAsync 的测试中性能也不可能比得上同步版本。
    nebkad
        10
    nebkad  
       6 小时 11 分钟前
    @hez2010 我知道要出的这个 Runtime Async 现在可以做到不需要堆分配。
    我的意思是这个优化来得太迟,社区里尤其是游戏开发者,一大堆手动打这个 patch 的实现,例如 UniTask, GDTask ,分别就是为 Unity3D 和 Godot 环境用的非堆上分配的异步库。

    Rust 的 async await 在标准化的时候就不依赖于堆分配(当然也有别的限制,但是编译器会处理)
    比起来就会显得 CLR 不思进取
    hez2010
        11
    hez2010  
    OP
       4 小时 5 分钟前
    @nebkad UniTask 和 GDTask 哪怕有 Runtime Async 也是有必要存在的,因为需要自定义调度器实现。
    比如 PIE 停止后需要停止调度 continuation ,自带的 Task 显然做不到,因为 async/await 的调度行为需要在 Task 或者 Task-like 类型来实现。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:12 · PVG 02:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.