如何查看带有优化的C ++代码的编译器重构

尼科斯·卡扎基斯(Nikos Kazazakis)

我想知道是否/如何在启用优化功能时查看编译器如何使用clang ++ / g ++重新编写一段代码。我知道英特尔编译器有一个标志来产生相关的输出,但是我似乎在其他编译器中找不到等效的输出。

尼科斯·卡扎基斯(Nikos Kazazakis)

因此,由于您的指导,我得以发现一些非常酷的东西,所以我想分享一下:

使用Clang ++-4.0,可以如下编译可执行文件:

clang++-4.0 -std=c++14 -O3  -fsave-optimization-record -foptimization-record-file=myOptfile.yaml sourceFile.cpp

这会将成功和失败优化的记录保存在myOptfile.yaml中。可以使用llvm-opt-report-4.0进行查看,但是如果使用llvm / utils / opt-viewer.py可以查看其真正功能。

为此,请克隆llvm存储库,导航至源目录,并在生成myOptFile.yaml之后运行以下命令:

python ~/myInstallDir/llvm/utils/opt-viewer/opt-viewer.py myOptFile.yaml reportsDirectory/

这将创建许多html文件,您可以使用index.html(在reportsDirectory文件夹中)进行导航。

结果很棒,看起来像这样:

在此处输入图片说明

大多数事情都是可点击的,因此您可以使用html超链接导航到源代码的其他部分,包括c ++库,然后查看发生了什么!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为Borland编译器重写C ++模板代码

涉及编译器重新排序的优化示例

编译器如何优化这段代码

我如何“告诉” C编译器不应优化代码?

具有互斥的编译器重新排序部分

(A + B + C)≠(A + C + B)和编译器重新排序

查看C#编译器预编译了哪些代码

如何编写(测试)编译器/ JIT无法优化的代码?

JVM JIT编译器如何优化“重复的” Java代码?

重构Java脚本编译器的代码

是否有C#编译器为“优化代码”定义,如存在DEBUG或TRACE?

用C ++编译器编译C代码

如何使用jack编译器为Android编译代码?

兼容的Java编译器可以优化此代码吗?

为什么编译器不优化此代码

Typescript编译器或ES2015-是否优化代码?

鉴于编译器优化和代码性能,`if constexpr`与`if`

Android中的Java代码编译器优化

为什么编译器不优化中断代码?

ms vc ++编译器可优化错误代码

编译器中间阶段的代码优化的目的是什么?

为什么编译器优化会破坏我的代码?

编译器可以优化此代码段吗?

查看由IBM Enterprise COBOL编译器生成的代码

具有未定义结果的C代码,编译器生成无效代码(带有-O3)

带有 Bootstrap 网格的 Wordpress 循环。如何优化这段代码?

即使C ++编译器无法编译,为什么C编译器仍可以编译此代码?

如何使用 Visual Studio 编译器在 Windows 上编译 cython 编译的 c 代码

“ C#编译器”足够聪明,可以删除由于ConditionalAttribute优化而没有副作用的代码