Tôi có một dự án lớn, khoảng 150 000 LOC của mã C++. Thời gian xây dựng là khoảng 15 phút. Dự án này bao gồm nhiều tiểu dự án có quy mô khác nhau.Thời gian xây dựng GCC không được hưởng lợi nhiều từ các tiêu đề được biên dịch trước
Tôi đã xây dựng các tiêu đề được biên dịch riêng biệt cho mỗi tiểu dự án, nhưng khi tôi sử dụng chúng, thời gian xây dựng vẫn gần bằng nhau. Dường như thời gian xây dựng ít hơn 5-10%, không nhiều hơn.
Đầu đề biên dịch chắc chắn được sử dụng, tôi sử dụng tùy chọn -Winvalid-pch
và tôi đã cố biên dịch với tùy chọn biên dịch -H
, tiêu đề được biên dịch trước của tôi xuất hiện ở đầu ra có ký hiệu 'bang', nghĩa là trình biên dịch có thể sử dụng tiêu đề được biên dịch trước.
Tất cả các tiêu đề được biên dịch trước của tôi không phải là rất lớn, mỗi tệp là khoảng 50Mb. Tôi sử dụng tập lệnh python, được tìm thấy here để tạo danh sách các tiêu đề được biên dịch sẵn nhất nên danh sách các ứng viên biên dịch trước của tôi khá tốt.
Có công cụ miễn phí/mã nguồn mở nào để tối ưu hóa xây dựng không? Dường như tiện ích tiêu chuẩn make
không có khả năng đo lường thời gian xây dựng của các mục tiêu khác nhau. Tôi không thể tìm cách để có được số liệu thống kê cho các mục tiêu khác nhau với make
. Tôi không nói về phân tích phụ thuộc hay cái gì đó tiên tiến. Tôi chỉ muốn biết những mục tiêu nào phần lớn thời gian đã bị lãng phí.
Ngoài ra, có vẻ như GCC không hiệu quả trong việc xử lý các tiêu đề được biên dịch trước. Tôi đã không thể nhận được bất kỳ tiểu dự án xây dựng đáng kể nhanh hơn, tối đa tốc độ mà tôi nhận được là 20% trên một dự án mà được ba phút để xây dựng. Dường như nó dễ dàng hơn và rẻ hơn để mua máy nhanh hơn với ổ đĩa trạng thái rắn hơn là tối ưu hóa thời gian xây dựng trên Linux với GCC.
thử xây dựng với cả mã nguồn và thư mục đầu ra nằm trong/dev/shm. Nếu thời gian xây dựng giảm đáng kể thì hệ thống tệp xây dựng trước của bạn là người đóng góp thời gian xây dựng chính. – bobah
Tôi sẽ không gọi nó là rất lớn.Giống như một dự án giữa kích thước vừa và nhỏ :) –
@ BЈовић đồng ý, nhưng tăng cường biên dịch nhanh hơn (hoặc ít nhất là so sánh) trên máy của tôi. – Lazin