gpt4 book ai didi

c++ - C/C++ 的 JIT 优化器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:48 24 4
gpt4 key购买 nike

我在阅读有关 JIT 相对于预编译的优势的文章,其中提到的其中一项是 JIT 可以根据实际运行时数据调整分支预测。自从我在大学里编写编译器以来已经有很长一段时间了,但在我看来,在大多数情况下(没有明确的 goto),预编译代码也可以实现类似的东西。

考虑以下代码:

   test x
jne L2:
L1: ...
jmp L3:
L2: ...
L3:

如果我们有一些运行时工具可以查看“jne L2”为真的次数,它可以物理交换 L1: block 和 L2: block 中的所有指令。当然,它必须知道在交换期间两个 block 内都没有线程,但这些都是细节...

   test x
jeq L1:
L2: ...
jmp L3:
L1: ...
L3:

我知道当程序代码加载到只读内存中时也存在问题等,但这是一个想法。

所以我的问题是,这样的 JIT 优化对于 C/C++ 是否可行,或者我是否遗漏了一些无法做到这一点的根本原因?是否有针对 C/C++ 的 JIT 优化器?

最佳答案

据我所知,没有适用于 C++ 的 JIT 编译器;但是,GCC 确实支持反馈定向优化 (FDO),它可以使用运行时分析来优化分支预测等。

参见 GCC options以“-fprofile”开头(提示:“-fprofile-use”使用生成的运行时配置文件来执行优化,而“-fprofile-generate”用于生成运行时配置文件)。

关于c++ - C/C++ 的 JIT 优化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7376751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com