2017-11-22 23 views
5

Tôi nghĩ mọi thứ đều có trong tiêu đề, nhưng để cung cấp thêm ngữ cảnh. Chúng tôi có hai gói 70+ có thời gian biên dịch khá khác nhau: Một lần mất nhiều gấp đôi thời gian khác (không tính đến sự song song tài khoản). Tôi muốn biết mô-đun nào mất nhiều thời gian nhất để hiểu rõ hơn về những gì gây ra sự khác biệt này.Có cách nào để lập hồ sơ thời gian biên dịch cho mỗi mô-đun với GHC không?

+0

https://stackoverflow.com/ Câu hỏi/35375143/haskell-gỡ lỗi-dài-biên dịch-lần-on-stack-dự án – leftaroundabout

+0

có, nhìn thấy câu hỏi đó nhưng không có câu trả lời bên cạnh một số lời khuyên chung về cách làm cho GHC nhanh hơn ... Hoặc có lẽ tôi đọc nó quá nhanh ? – insitu

Trả lời

0

Không chắc chắn nếu bạn có nghĩa là 70+ gói hoặc 70+ module, nhưng dù sao ...

Tôi không thể nghĩ ra cách nào đặc biệt dễ dàng để làm điều này. Bạn có thể thử với thời gian chính xác khi GHC viết thư của nó lên bảng điều khiển; Tôi không chắc nó chính xác như thế nào. Nếu không, tôi đoán bạn sẽ phải tìm ra thứ tự biên dịch chính xác, và gọi GHC thủ công để biên dịch một mô-đun cùng một lúc và sử dụng các công cụ cấp độ hệ điều hành để thời gian mỗi lệnh biên dịch mất bao lâu. (Có lẽ tính năng tạo Makefile tự động của GHC có thể giúp ...)

Đó là có thể để biên dịch GHC với định dạng được kích hoạt, nhưng tôi không nghĩ điều đó sẽ hữu ích trong trường hợp này. (Và đó là khá nhiều công việc.)

FWIW, tôi cũng sẽ muốn biết lý do tại sao một số module mất một vĩnh cửu nhỏ để biên dịch trong khi những người khác gần như ngay lập tức ...

+0

Cảm ơn. Tôi nghĩ rằng tôi có một giải pháp emrbyonic dựa trên '-dshow-passes' để tính một số thống kê cho mỗi module (và có, ý tôi là 70 modules vì ​​tôi muốn biết module nào mất nhiều thời gian nhất, dễ dàng hơn cho các gói) . Tôi đã bắt đầu viết một số công cụ rất đơn giản để trích xuất thông tin đó từ các thống kê xây dựng và kết xuất. – insitu

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