使用 CLANG/LLVM 编译器减少代码的执行时间
嗯...当我在寻找一个好的编译器时,我遇到了 clang/LLVM。该编译器给出的结果与其他编译器(如 icc、pgi)相同。但问题是关于这个编译器的教程很少......请让我知道在哪里可以找到关于 clang 编译器的教程。
注: 我使用以下标志编译了我的 c 代码 clang -O3 -mfpmath=sse file.c
Well... When i was searching for a good compiler I came across clang/LLVM. This compiler gives me same result as other compilers like icc, pgi. But the problem is there are very few tutorials on this compiler... Kindly let me know where can I find the tutorials on the clang compiler.
Note by:
I have compiled my c code using the following flags clang -O3 -mfpmath=sse file.c
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Clang(命令行编译器)采用与 gcc 兼容的选项,但接受并忽略 GCC 采用的许多标志(例如 -mfpmath=sse)。我们的目标是生成开箱即用的良好代码。有一些标志允许 clang 违反语言标准,这些标准在某些情况下可能有用,例如 -ffast-math。
如果您正在寻求良好的性能,我强烈建议尝试链接时间优化,它允许 clang 跨应用程序中的源文件进行优化。根据您所在的平台,可以通过将 -O4 传递给编译器来启用此功能。如果您使用的是 Linux,则需要使用“gold”链接器(请参阅 http://llvm.org/docs/GoldPlugin。 html)。如果您使用的是 Mac,它应该“适用于”任何最新版本的 Xcode。
Clang (the command line compiler) takes gcc-compatible options, but accepts and ignores a lot of flags that GCC takes (like -mfpmath=sse). We aim to generate good code out of the box. There are some flags that allow clang to violate the language standards that can be useful in some scenarios, like -ffast-math though.
If you're looking for good performance, I highly recommend experimenting with link-time-optimization, which allows clang to optimize across source files in your application. Depending on what platform you're on, this is enabled by passing -O4 to the compiler. If you're on linux, you need to use the "gold" linker (see http://llvm.org/docs/GoldPlugin.html). If you're on the mac, it should "just work" with any recent version of Xcode.
clang 不是编译器,它只是 LLVM 编译器的前端。因此,当您调用 clang 时,它会解析 c/c++ 文件,但优化和代码生成是在 LLVM 本身中处理的。
您可以在这里找到 LLVM 优化和分析选项的文档:http://llvm.org/docs/Passes。 html
完整的文档在这里 http://llvm.org/docs/
另外有用的选项是此处列出 http://linux.die.net/man/1/llvmc (我建议 clang 也会接受其中的大多数)
The clang is not a compiler, it is just frontend of LLVM compiler. So, when you calls clang, it parses c/c++ file but the optimization and code generation is handled in LLVM itself.
Here you can found a documentation of LLVM optimization and analysis options: http://llvm.org/docs/Passes.html
The full documentation is here http://llvm.org/docs/
Also useful options are listed here http://linux.die.net/man/1/llvmc (I suggest clang will accept most of them too)