2015-11-06 19 views
5

bất cứ ai có thể giải thích lý do tại sao theo các hướng dẫn:Xây dựng tất cả các Boost trong một vài phút

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

... phải mất máy đàng hoàng của tôi 5 giờ để xây dựng tất cả các Boost, trong khi some folks báo cáo làm như vậy chỉ trong 3 phút?

Có cách nào khác để xây dựng Boost hơn so với đề cập ở trên mà thực sự diễn ra khá nhanh (so với vài giờ, ở bất kỳ mức nào).

Tôi đang sử dụng trình biên dịch Clang trên tùy chọn Darwin (Mac). Bạn không chắc chắn mức độ liên quan của nó nhưng tôi có RAM 16 GB và SSD gần đây. Đồng hồ là 2,3 Ghz.

Chỉnh sửa: Tôi vui mừng báo cáo, dựa trên các nhận xét và câu trả lời, sử dụng tùy chọn ./b2 -j4 -d0, tôi nhận được thời gian biên dịch của mình xuống còn 13 phút. Ngoài ra, tùy chọn -jN không được liệt kê trong tập hợp các tùy chọn có sẵn với mặc định --help, thay vào đó bạn phải gọi --help-options để xem các kỹ thuật "nâng cao" bổ sung này.

+1

trình biên dịch và nền tảng nào? –

+0

@hellofunk - Bạn đã đề cập trong liên kết mà bạn có một lõi tứ, macbook 3 năm tuổi. Bạn có thể giảm 5 giờ đó xuống còn hơn nửa giờ bằng cách sử dụng 'make -j8'; xem câu trả lời của iSanych. –

Trả lời

8

Tôi vừa chạy một vài thử nghiệm với một vài cấu hình xây dựng khác nhau.

Phần cứng: 2012 MacBook Pro (2.3Ghz Ivy Bridge i7 [i7-3615QM]), SSD nhà máy và RAM 16 GB.

Phần mềm: Mac OS X 10.11.1 với Xcode 7 (Phiên bản Apple LLVM 7.0.0 clang-700.1.76). Bản sao mới của Boost 1.59.0 từ trang web.

Tôi đã thử nghiệm các lệnh sau xây dựng:

Mặc định xây dựng:

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

Build buộc liên kết của libC++

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

Đối với mỗi tôi đã cố gắng ba giá trị khác nhau cho N: 1 (sợi đơn), 4 (lõi vật lý phù hợp), và 8 (siêu kết hợp) lõi đã đọc).

Mặc định liên kết:

  • Với 8 lần build là phút 6:45
  • Với 4 lần xây dựng là phút 7:22
  • Với 1 thời gian xây dựng là 22:58 phút

Linking ++ libc:

  • với 8 xây dựng thời gian là 4:35 phút
  • Với 4 lần xây dựng là 05:45 phút
  • Với 1 thời gian xây dựng được 17:15 phút

Kết luận: Boost không cần phải mất cả ngày để xây dựng trên một hệ thống đa lõi với một SSD ngay cả khi nó không phải là thương hiệu mới. Việc xây dựng với chuỗi mặc định (chuỗi đơn) sẽ mất nhiều thời gian hơn so với bản dựng song song. Việc xây dựng Boost với clang trên OS X không được hưởng lợi chút nào từ việc siêu phân luồng. Liên kết với libC++ có vẻ nhanh hơn một chút.

+0

Rất cám ơn sự giúp đỡ về điều này. Việc xây dựng 1 lõi của bạn có thể mất rất nhiều thời gian, tôi nghĩ, nếu nó giống như của tôi. – johnbakers

+0

Bạn cũng nhận được hàng trăm nghìn kết quả đầu ra nhật ký xây dựng này với Boost './B2'? – johnbakers

+0

Xây dựng với clang tạo ra rất nhiều cảnh báo trình biên dịch lặp lại mà Linux/gcc xây dựng không. Tôi sẽ lấy một số chính xác khi xây dựng này được thực hiện, nhưng nói chung, có.Các cấu hình trên tạo ra rất nhiều đầu ra. – zaphoyd

5

Tôi đoán bạn không sử dụng tùy chọn xây dựng song song -jN (trong đó N số quy trình, có thể cao hơn một chút so với số lõi trên máy của bạn). Ngoài ra âm thanh 3 phút giống như cấu hình đơn lẻ trên máy có đĩa sdd hoặc ram, và 5 giờ như tất cả các cấu hình với quá trình đơn và HDD chậm.

+0

Tôi không chỉ định bất kỳ tùy chọn nào, chỉ sử dụng mặc định Tăng như được cung cấp trong liên kết đó, vì vậy tôi đoán tôi không xây dựng song song. Tôi có thực sự thấy tăng ít nhất là 10x trong thời gian xây dựng bằng cách đi song song (như được đề xuất trong một trong các nhận xét cho câu hỏi của tôi)? – johnbakers

+0

@hellofunk: Sử dụng './b2 -jn' bằng' n' bằng số lõi bạn có. Bạn sẽ thấy giảm thời gian xây dựng của vòng xuyến 'x/n' (như dự kiến). Để so sánh, tôi chỉ thực hiện một 'time ./b2 -j12' trên máy trạm dev của tôi (dual hexacore Xeon @ 3,3 GHz), và đưa ra 2:05 phút thời gian thực, 22:54 phút thời gian người dùng. – DevSolar

+0

Thời gian sử dụng 22:54 của bạn vẫn còn xa so với 300 phút của tôi. Ngoài ra, kết quả xây dựng của tôi (các bản ghi mà ./b2 tạo ra) là hơn nửa triệu dòng theo bộ đệm vỏ emacs. Điều đó cũng bình thường không? Có lẽ tất cả việc ghi nhật ký đó đang làm chậm mọi thứ xuống (mặc dù không chắc chắn rằng nó có thể vô hiệu hóa việc ghi nhật ký đó). – johnbakers

0

Hầu hết các gói tăng cường chỉ là tiêu đề. Nếu bạn chỉ cần những người sau đó cài đặt chỉ là sao chép các tập tin. Dựa trên số lượng gói được biên dịch bạn đang thực hiện, thời gian có thể khác nhau tùy theo một số đơn đặt hàng. Plus có, biên dịch song song, máy khác nhau (Raspberry Pi vs 32 CPU IvyBridge Blade), vv Plus xây dựng từ và vào /dev/shm có thể giúp bạn tăng tốc đáng kể.

+1

Làm thế nào để xây dựng thư mục chính nó ảnh hưởng đến tốc độ? – johnbakers

+0

'/ dev/shm' được hỗ trợ bởi bộ nhớ (ví dụ: đĩa ram) thay vì SSD hoặc HDD chậm hơn. – zaphoyd

Các vấn đề liên quan