Tôi khuyên bạn nên chống lại bằng cách sử dụng tùy chọn -l
.
Về nguyên tắc, -l
có vẻ vượt trội so với -j
. -j
cho biết, hãy bắt đầu nhiều công việc này. -l
nói, đảm bảo rằng nhiều công việc đang chạy. Thông thường, những thứ này gần như giống nhau, nhưng khi bạn có các công việc ràng buộc I/O là những điều kỳ quặc khác, thì -l
sẽ tốt hơn.
Điều đó nói rằng, khái niệm trung bình tải là một chút không rõ ràng. Nó nhất thiết là một mẫu của những gì diễn ra trên hệ thống. Vì vậy, nếu bạn chạy make -j -l N
(đối với một số N
) và bạn có một makefile được viết tốt, sau đó thực hiện ngay lập tức sẽ bắt đầu một số lượng lớn công việc và hết bộ mô tả tệp hoặc bộ nhớ trước khi tải mẫu hệ thống đầu tiên. Ngoài ra, kế toán của trung bình tải khác nhau trên các hệ điều hành, và một số người mơ hồ không có nó ở tất cả.
Trong thực tế, bạn cũng sẽ bị tắt bằng cách sử dụng -j
và sẽ ít bị đau đầu hơn. Để có được hiệu suất cao hơn trong quá trình xây dựng, hãy điều chỉnh các tệp makefiles của bạn, chơi với các tùy chọn trình biên dịch và sử dụng ccache hoặc tương tự.
(tôi nghi ngờ lý do ban đầu cho các tùy chọn -l
bắt nguồn từ một thời điểm khi nhiều bộ xử lý rất hiếm và I/O là rất chậm.)
Nguồn
2012-11-13 03:11:16
thực nghiệm mặc dù tôi nhận thấy trên một máy trong khi thời gian sử dụng khác nhau của -j tôi có các biên dịch nhanh nhất bằng cách sử dụng -j8 trên một máy 4 lõi. – Zitrax
Tôi có kinh nghiệm tương tự. Có lẽ vì có một số giai đoạn biên dịch I/O-ràng buộc, do đó khi một quá trình biên dịch chặn cho I/O, một trình biên dịch khác có thể sử dụng thời gian đó để biên dịch. –