2009-12-09 16 views
18

Quan tâm chính của tôi là chuyển mã từ tệp tiêu đề sang tệp nguồn (để tách), nhưng vẫn giữ hiệu suất tương tự cho nội dung được nội tuyến.Có ai có kinh nghiệm với LTO của Gcc (C++) không?

Tôi không chắc chắn nên bắt đầu từ đâu, ai đó có thể giải thích việc cần làm?

+1

Có lẽ bạn có thể expamd trên những gì bạn có nghĩa là bởi LTO? –

+6

Tối ưu hóa thời gian liên kết? –

Trả lời

4

Chúng tôi đã thực hiện các thử nghiệm rất hạn chế. Trong trường hợp của chúng tôi, hiệu suất đạt được nơi khá tiêu cực, nhưng như chúng tôi đã chăm sóc có nội tuyến tốt, đó không phải là cực kỳ đáng ngạc nhiên. Tuy nhiên, việc cho phép LTO phát sinh một sự gia tăng lớn về mức tiêu thụ bộ nhớ của GCC, về cơ bản không thể biên dịch song song trên 4 máy developpement 4 CPU/4 GB của chúng tôi, vì vậy chúng tôi tạm dừng thử nghiệm và chờ các phiên bản tiếp theo thử lại.

+1

thật đáng buồn; LTO làm cho C dễ sử dụng hơn, imo; hiện tại, thường không thể sử dụng con trỏ mờ vì bạn cần định nghĩa đầy đủ cho các hàm nội tuyến – Christoph

+0

Bạn có thử tùy chọn '-fwhopr' để giảm mức tiêu thụ bộ nhớ không? – osgx

+2

Có bản cập nhật nào về điều này không? Bạn đã thử lại chưa? Các thay đổi GCC 4.7.0 chỉ ra rằng những cải tiến đáng kể đã được thực hiện (ví dụ họ đưa ra là xây dựng firefox bằng LTO, với GCC 4.7 yêu cầu 3GB để làm điều đó, nơi các phiên bản trước cần 8GB) –

5

Tôi đã thực hiện một số thử nghiệm trên Firefox và LTO cho thấy việc sử dụng bộ nhớ, thời gian biên dịch và thời gian hoạt động At my blog cũng so sánh với LLVM. LTO nhanh chóng phát triển, giá vé GCC 4.9 tốt hơn đáng kể so với các phiên bản trước. Nó không phải lúc nào cũng rõ ràng làm thế nào để nó hoạt động đúng cho một ứng dụng cụ thể, văn bản mô tả các vấn đề chính bạn có thể gặp phải (thiếu plugin liên kết, sử dụng các tệp LTO chất béo và vứt bỏ phần LTO ở liên kết và các phần khác)

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