Kể từ khi bắt đầu tại một công ty mới, tôi nhận thấy rằng họ sử dụng các tệp cpp thống nhất cho phần lớn giải pháp của chúng tôi và tôi đã tự hỏi liệu có ai có thể cho tôi lý do chính xác không? ? Tôi đã nghĩ rằng việc chỉnh sửa một tệp cpp trong các tệp thống nhất sẽ buộc biên dịch lại tất cả chúng.Những lợi ích/bất lợi của sự hợp nhất được xây dựng?
Trả lời
Rất tương tự câu hỏi và câu trả lời tốt ở đây: #include all .cpp files into a single compilation unit?
Bản tóm tắt có vẻ là có ít I/O trên cao là lợi ích lớn.
Xem thêm The Magic Of Unity Builds cũng như được liên kết trong câu hỏi trên.
câu trả lời tuyệt vời, cảm ơn rất nhiều sự giúp đỡ của bạn, sau khi đọc những liên kết im vẫn không khôn ngoan hơn nếu chỉnh sửa các tập tin trong cpp đơn vị lực lượng một biên dịch hoàn toàn của toàn bộ nguồn, bất kỳ ý tưởng về điều này? – Stowelly
Có, nó sẽ. Cho dù đó là một điều xấu hay không phụ thuộc vào mức độ thường xuyên bạn phải làm một xây dựng lại đầy đủ rồi. –
Nếu một tệp thay đổi, bất kỳ hệ thống xây dựng phong nha nào sẽ nhận thấy sự phụ thuộc đã thay đổi và biên dịch lại rất nhiều. Bạn có thể giảm thiểu một số thời gian đó với bộ nhớ cache của trình biên dịch như ccache tuyệt vời - xem http://ccache.samba.org/ – akent
Lee Winder posted kinh nghiệm của mình với Unity xây dựng - The Evils of Unity Builds
Kết luận của ông là:
Unity xây dựng. Tôi không thích chúng.
Bài viết rất hữu ích. Gần đây tôi đã nhận thấy rằng việc thực hiện một số thay đổi đối với các tệp trên nhiều dự án trong giải pháp có thể mất tới nửa giờ để xây dựng (ngay cả với khả năng hoài nghi) nhưng giải pháp làm sạch và xây dựng từ đầu mất khoảng 5 phút, vì vậy chắc chắn là rất hợp lệ điểm đó! – Stowelly
Liên kết bây giờ có thể được tìm thấy [ở đây] (http://engineering-game-dev.com/2009/12/15/the-evils-of-unity-builds/). – imallett
@imallett Liên kết cũng bị hỏng. – glauxosdever
Đó là vì nó giúp tiết kiệm công việc thừa. Phân tích và biên dịch dự phòng cho các phụ thuộc. Liên kết cũng phức tạp hơn nhiều - bạn có thể xuất tất cả trong một đối tượng (hoặc một vài) hoặc xuất riêng biệt dư thừa trên hầu hết các tệp đối tượng của mục tiêu. Ít đối tượng hơn dẫn đến ít I/O hơn và giảm thời gian liên kết. Tùy thuộc vào thiết lập của bạn, việc đưa vào có thể là một vấn đề - trên hệ thống "xây dựng sự thống nhất" mà tôi sử dụng, việc xây dựng cuối cùng là CPU và/hoặc bộ nhớ bị ràng buộc.
- 1. Lợi ích của các nhà xây dựng chung
- 2. Những lợi thế của VistaDB
- 3. những lợi thế của MVC3 trên MVC2
- 4. CMS hướng sự kiện - lợi thế và bất lợi
- 5. Cố gắng tự tin vào những lợi ích của TDD
- 6. xUnit hoặc NUnit? Những lợi thế và bất lợi của nhau?
- 7. Lợi ích của việc xây dựng đánh dấu HTML với những người trợ giúp HTML trong web2py là gì?
- 8. Lợi ích thực sự của phạm vi
- 9. node.js - những lợi thế của việc sử dụng ngọc bích
- 10. Những bất lợi có thể xảy ra của Zend
- 11. Parallel.Foreach + lợi tức lợi nhuận?
- 12. Sự kiện so với Lợi nhuận
- 13. Lợi ích của Struts
- 14. Lợi ích của Mẫu Cầu
- 15. những lợi thế và bất lợi của việc thực hiện cuộc gọi ajax bằng cách sử dụng jquery là gì?
- 16. QtCreator xây dựng lợi nhuận collect2: ld trở về trạng thái thoát 1
- 17. Thuật toán nào được hưởng lợi nhiều nhất từ việc nhân lên hợp nhất?
- 18. Lợi tức lợi nhuận trong Java
- 19. Lợi thế của Arc over Racket
- 20. Những lợi ích chính khi tham gia WPF là gì?
- 21. 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
- 22. Lợi ích của JavaScript Prototype
- 23. Bất kỳ sự bất lợi về hiệu suất của GC.disable?
- 24. những lợi thế khi sử dụng scrapyd là gì?
- 25. Lợi ích của JCA là gì?
- 26. Những lợi thế khi sử dụng Qt là gì?
- 27. Lợi thế của RESTEasy trên Apache CXF?
- 28. Bất lợi của trứng Python?
- 29. Lợi ích chính của MSMQ
- 30. Bất lợi của hàng đợi tròn?
Hãy nhớ rằng bản dựng kết hợp sẽ thay đổi ngữ nghĩa, vì có rất nhiều thứ phụ thuộc vào giới hạn của đơn vị dịch thuật. –