2010-06-30 37 views
8

Và tại sao? Có một quá trình khởi động và biên dịch quá trình biên dịch thực, nhưng phần nào tiêu tốn nhiều thời gian nhất?Tại sao gói MacHC của GHC mất quá nhiều thời gian để biên dịch?

+4

Bạn biết bạn có thể tải xuống trình biên dịch dựng sẵn và tập hợp thư viện cho OS X không? http://hackage.haskell.org/platform/mac.html –

+0

Tôi hiểu rằng có vấn đề với interop giữa phiên bản dựng sẵn và Macports. – hampurter

+0

OK, tôi không cần bất cứ điều gì liên quan đến Haskell từ Macports. Trình cài đặt nền tảng và Cabal là đủ. –

Trả lời

2

Một số quá trình xây dựng diễn ra khá lâu, và lượng thời gian phụ thuộc rất lớn vào tốc độ CPU của bạn và thời gian xử lý có thể được dành cho bản dựng.

Nếu bạn lo lắng rằng nó có thể bị treo tại một thời điểm nhất định, hãy chạy install với cờ -v để nhận thêm đầu ra mô tả liên quan đến quá trình xây dựng. Do đó, lệnh sẽ có dạng như sau:

sudo port -v install [portfile] 
+1

Cũng như dự án lớn và phức tạp như thế nào, loại ổ cứng mà hộp đang sử dụng, v.v. – NotMe

+0

Phải - tôi đang khá chung chung, nhưng tất nhiên kích thước của dự án, số lượng tệp, trình biên dịch/tiện ích xây dựng đang được sử dụng, số lượng phụ thuộc, tốc độ đọc/ghi, v.v. đều góp phần vào khoảng thời gian cần thiết. – nearlymonolith

3

Có thể mất một lúc. Khi tôi sử dụng để biên dịch nó trên iBook G4 của tôi, nó mất đến 7 giờ. Ngay cả trên MacBook Pro với nhiều RAM và bộ xử lý nhanh, có thể mất 2-3 giờ.

4

Xây dựng GHC nổi tiếng vì đã mãi mãi. Tôi đã nghe những câu chuyện kinh dị về việc mất hơn 8 giờ để xây dựng nguồn. Từ những gì tôi hiểu, chủ yếu là do việc xây dựng mặc định của GHC cố gắng thực hiện một số lượng tối ưu hóa lớn để tăng tốc hiệu suất thời gian chạy của riêng nó. Ngay cả với một hệ thống dựng sẵn một phần (đó là những gì tôi tin rằng macports cung cấp) quá trình này vẫn có thể mất một lúc vì tất cả các liên kết.

EDIT: Xem sau http://hackage.haskell.org/trac/ghc/wiki/Building/Using#HowtomakeGHCbuildquickly

+0

Đây là câu trả lời chính xác: GHC mất nhiều thời gian để biên dịch hơn bất kỳ phần mềm nào tôi biết. Tôi đã xây dựng nó trong hơn 8 giờ trên i3 của tôi. – Mikhail

9

Từ góc nhìn Gentoo:

Trong Gentoo, mọi thứ đều được biên dịch. Những gì chúng tôi làm cho GHC là chúng tôi xây dựng một phiên bản mới của GHC từ phiên bản cũ hơn để tạo phiên bản khởi động nhị phân, sau đó đóng gói và cho phép người dùng sử dụng phiên bản đó để biên dịch phiên bản mới.

Từ bộ nhớ, việc biên dịch nhị phân có thể mất nhiều hơn gấp đôi thời gian (mất khoảng 45 phút để sử dụng nhị phân để biên dịch phiên bản mới trên máy tính xách tay của tôi). Có một số khác biệt (tài liệu được xây dựng và vận chuyển với nhị phân thay vì mỗi người dùng tự xây dựng nó) nhưng không có gì mà tôi có thể thấy để tính toán sự khác biệt lớn như vậy. Ebuild thực tế được sử dụng để xây dựng cả nhị phân và cho người dùng cuối có thể được tìm thấy ở đây (cho phép cờ ghcbootstrap có nghĩa là nó xây dựng nhị phân, cho phép cờ nhị phân nghĩa là người dùng cài đặt và sử dụng nhị phân dựng sẵn thay vì tự xây dựng GHC): http://code.haskell.org/gentoo/gentoo-haskell/dev-lang/ghc/ghc-6.12.3.ebuild

Như vậy, tôi đoán rằng đó là quá trình khởi động ban đầu mất quá nhiều thời gian nếu Macports thực sự xây dựng một nhị phân khởi động ban đầu (đặc biệt nếu nó làm như vậy từ bản phát hành C-only cuối cùng và khởi động theo cách của bạn lên phiên bản bạn thực sự muốn cài đặt).

+0

Đây là câu trả lời duy nhất mà ít nhất là cố gắng trả lời câu hỏi. –

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