【问题标题】:Reducing the execution time of the code using CLANG/LLVM compiler使用 CLANG/LLVM 编译器减少代码的执行时间
【发布时间】:2011-02-17 11:34:53
【问题描述】:

嗯...当我在寻找一个好的编译器时,我遇到了 clang/LLVM。这个编译器给我的结果与其他编译器如 icc、pgi 相同。但问题是关于这个编译器的教程很少……请告诉我在哪里可以找到关于 clang 编译器的教程。

注: 我已经使用以下标志编译了我的 c 代码clang -O3 -mfpmath=sse file.c

【问题讨论】:

  • 这是您提出的第二个关于优化(更快)代码的方法的问题。也许您可以在 StackOverflow 上发布实际代码?只有那部分需要大量执行时间的代码。

标签: llvm clang


【解决方案1】:

Clang(命令行编译器)采用与 gcc 兼容的选项,但接受并忽略 GCC 采用的许多标志(如 -mfpmath=sse)。我们的目标是生成开箱即用的好代码。有一些标志允许 clang 违反在某些情况下可能有用的语言标准,例如 -ffast-math。

如果您正在寻找良好的性能,我强烈建议您尝试链接时间优化,它允许 clang 跨应用程序中的源文件进行优化。根据您使用的平台,可以通过将 -O4 传递给编译器来启用此功能。如果您使用的是 linux,则需要使用“gold”链接器(请参阅http://llvm.org/docs/GoldPlugin.html)。如果你在 Mac 上,它应该与任何最新版本的 Xcode 一起“正常工作”。

【讨论】:

  • 我找不到列出 clang 实际考虑的 gcc 选项的页面(如 -ffast-math)。有这样的页面吗?
  • @AlexandreHamez 手册页列出了 -ffast-math。我猜这个手册页是权威的。
【解决方案2】:

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 也会接受其中的大部分)

【讨论】:

  • 我认为 Clang 只是将这些传递给 LLVM 编译器 :)
  • @Matthieu M.,是的,它可以通过一些。但也(至少在理论上)它可以禁止某些选项并在它们上给出错误(中止)。例如。 clang 可以在 -x 选项上中止,而不是 c/c++ lang,但 llvmc 本身可以接受这个 lang,如果它有一个前端的话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
相关资源
最近更新 更多