2011-02-17 98 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。