2011-02-17 101 views
2

嗯......当我在寻找一个好的编译器时,我遇到了clang/LLVM。这个编译器给了我和其他编译器如icc,pgi相同的结果。但问题是这个编译器上的教程很少......请让我知道我在哪里可以找到关于clang编译器的教程。使用CLANG/LLVM编译器减少代码的执行时间

说明: 我已经使用了以下标志clang -O3 -mfpmath=sse file.c

+0

这是您的第二个问题,关于优化(制作更快)代码的方法。可能你可以在StackOverflow上发布实际代码?只有那部分代码需要很长的执行时间。 – osgx 2011-02-17 14:21:58

回答

0

铛编译我的C代码不是一个编译器,它是LLVM编译器只是前端。所以,当你调用clang时,它会解析c/C++文件,但优化和代码生成是在LLVM中处理的。

这里您可以找到的LLVM优化和分析选项的文档:http://llvm.org/docs/Passes.html

完整的文档在这里http://llvm.org/docs/

而且有用的选项这里列出http://linux.die.net/man/1/llvmc(我建议铛会接受他们大多太)

+2

我认为Clang只是简单地将这些传递给LLVM编译器:) – 2011-02-21 15:46:10

+0

@Matthieu M.,是的,它可以传递一些信息。但是(至少在理论上)它可以禁止一些选项并给它们一个错误(中止)。例如。 clang可以在不带c/C++ lang的`-x`选项中放弃,但如果它有一个前端,llvmc本身可以接受这个lang。 – osgx 2011-02-21 15:55:32

8

Clang(命令行编译器)采用与gcc兼容的选项,但接受并忽略GCC需要的很多标志(如-mfpmath = sse)。我们的目标是开箱即可生成出色的代码。有一些标志允许clang违反在某些场景中可能有用的语言标准,但是,尽管如此,仍然可以使用-ffast-math。

如果您想要获得良好的性能,我强烈建议您尝试链接时优化,它允许clang在应用程序中的源文件之间进行优化。根据你在哪个平台上,这是通过将-O4传递给编译器来实现的。如果你在linux上,你需要使用“黄金”链接器(见http://llvm.org/docs/GoldPlugin.html)。如果你在Mac上,它应该“适用于”任何最新版本的Xcode。