【问题标题】:HALO support on recent compilers for C++ coroutines对 C++ 协程的最新编译器的 HALO 支持
【发布时间】:2022-06-27 18:56:36
【问题描述】:

我已阅读文章 Using Coroutine TS with zero dynamic allocations,作者坚持 HALO 将适用于协程,他提供了一个 godbolt link,其中显示了使用 clang 5.0 应用的生成器示例 HALO。

但是,使用更新版本的 clang(godbolt 上的 clang 13.0.1)我可以看到对 operator new 的调用。事实上,我找不到任何支持 HALO for corouine 的最新编译器。我已经在 MSVC 2019/2022、GCC 11.2 上进行了测试,所有程序集都显示了对 operator new 的调用。

我真的可以像作者在那篇文章中坚持的那样依赖 HALO 吗?例如,即使在将复制省略成为标准的 C++17 之前,RVO 也非常可靠。对于协程,我应该注意什么?

【问题讨论】:

    标签: c++ optimization coroutine


    【解决方案1】:

    原始示例使用 -O3 进行 HALO,只是没有使用 -O2。

    似乎 HALO 确实发生了,但取决于额外的优化过程。

    我所做的只是将其更新为 C++20 和 stdx -> std。

    https://godbolt.org/z/qrvWo68Yz

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2010-11-02
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      相关资源
      最近更新 更多