2015-11-06 22 views
5

任何人都可以解釋爲什麼以下說明:號樓所有的Boost幾分鐘

http://www.boost.org/doc/libs/1_59_0/more/getting_started/unix-variants.html#easy-build-and-install

...它把我的體面機5小時才能完成所有的Boost,而some folks報告做同樣的在3分分鐘

是否有另一種方法來構建Boost,而不是上面提到的那種,確實很快(相比之下幾個小時,無論如何)。

我在Darwin(Mac)選項上使用Clang編譯器。不知道它有多相關,但我有16 GB的RAM和最近的SSD。時鐘是2.3 Ghz。

編輯:我很高興地根據評論和答案報告,使用./b2 -j4 -d0選項,我的編譯時間縮短到13分鐘。此外-jN選項沒有在默認的--help的可用選項集中列出,您必須調用--help-options來查看這些額外的更高級技術。

+1

哪個編譯器和平臺? –

+0

@hellofunk - 你在鏈接中提到你有一個四核,3歲的macbook。你應該能夠通過使用'make -j8'將這個5小時減少到半小時以上;看到iSanych的回答。 –

回答

8

我只是用幾個不同的構建配置跑了幾個測試。

硬件:2012 MacBook Pro(2.3Ghz Ivy Bridge i7 [i7-3615QM]),工廠SSD和16GB內存。

軟件:帶有Xcode 7的Mac OS X 10.11.1(Apple LLVM版本7.0.0 clang-700.1.76)。新增的Boost 1.59.0副本來自網站。

我測試了以下構建命令:

默認構建:

./bootstrap.sh && ./b2 -j N

生成迫使的libC++

./bootstrap.sh && ./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++" -j N

的連接對於每個我試圖三個不同的值用於N:1(單線程),4(匹配物理內核)和8(匹配超線程)核心)。

默認聯:

  • 隨着8構建時間爲6:45分鐘
  • 隨着4生成時間爲7:22分鐘
  • 隨着1構建時間爲22點58分

鏈接的libC++:

  • 隨着8的建立時間爲4:35分鐘
  • 隨着4的生成時間爲5:45分鐘
  • 隨着1建造時間爲17:15分鐘

結論:升壓不應該採取一切的一天即使它不是全新的,也可以在具有SSD的多核系統上構建。使用默認線程(單線程)進行構建比平行構建要長。在OS X上使用clang構建的Boost構建確實從超線程中受益匪淺。與libC++鏈接似乎也更快一些。

+0

非常感謝您對此的幫助。我認爲,你的1核心構建很可能需要一段時間,如果它與我的一樣。 – johnbakers

+0

你是否也通過Boost'。/ b2'獲得了成千上萬的構建日誌輸出? – johnbakers

+0

使用clang編譯會產生大量重複的編譯器警告,說明Linux/gcc構建的警告不會。這個構建完成後,我會抓取一個確切的計數,但一般來說,是的。上面的配置會產生很多輸出。 – zaphoyd

5

我想你並沒有使用並行構建選項-jN(其中N個進程可能比你的機器上的內核數量稍高)。另外3分鐘聽起來像使用sdd或ram磁盤的機器上的單一配置,以及5小時的單個處理和慢速硬盤的所有配置。

+0

我沒有指定任何選項,只是使用該鏈接中提供的Boost默認值,所以我想我不是並行構建的。我真的會看到在平行的時候至少增加10倍的構建時間(正如我對這個問題的一個評論中所建議的那樣)? – johnbakers

+0

@hellofunk:使用'./b2 -jn'與'n'相等的核心數量。你會看到環形交叉口「x/n」的構建時間縮短(應該是預期的)。相比之下,我剛剛在我的開發工作站(dual hexacore Xeon @ 3.3 GHz)上做了一次'.bb2 -j12',並且實現了2:05分鐘的實時,22:54分鐘的用戶時間。 – DevSolar

+0

你的22:54的用戶時間與我的300分鐘相差甚遠。另外,根據emacs shell緩衝區,我的構建輸出(./b2創建的日誌)超過了50萬行。這也正常嗎?也許所有的日誌記錄都會減慢速度(儘管不確定是否可以禁用該日誌記錄)。 – johnbakers

0

大多數增強包僅包含標頭。如果你只需要這些,那麼安裝只是複製文件。根據您正在進行的編譯軟件包數量,時間可能會相差幾個數量級。另外是,並行編譯,不同的機器(Raspberry Pi vs 32 CPU IvyBridge Blade)等等。加上/dev/shm可以讓你大幅提升速度。

+1

構建目錄本身如何影響速度? – johnbakers

+0

'/ dev/shm'由內存(即RAM磁盤)支持,而不是較慢的SSD或HDD。 – zaphoyd

相關問題