2016-02-27 47 views
6

Thành ngữ pimpl (cũng là: tường lửa trình biên dịch) được sử dụng để rút ngắn thời gian biên dịch, với chi phí dễ đọc và hiệu suất thời gian chạy ngắn. Hiện tại, dự án cần thời gian để biên dịch, làm cách nào để đo lường các ứng cử viên pimpl tốt nhất?Làm thế nào để đo lường các ứng viên pimpl?

Tôi có kinh nghiệm sử dụng pimpl, rút ​​ngắn thời gian biên dịch từ hai giờ xuống mười phút, nhưng tôi đã thực hiện theo bản năng của mình: Tôi lý luận rằng các tệp tiêu đề lớp bao gồm (1) rất nhiều mã nguồn (2) các lớp phức tạp/mẫu, là các ứng cử viên tốt nhất để sử dụng thành ngữ mụn trên.

Có công cụ nào chỉ ra các lớp nào là ứng viên pimpl tốt một cách khách quan?

+1

OT: Tôi luôn cảm thấy rằng lý do chính để sử dụng PIMPL là không làm nổi bật giao diện công khai từ các chi tiết triển khai. Dù sao, câu hỏi tuyệt vời – sjaustirni

+0

bạn đã thử sử dụng các tiêu đề biên dịch trước để xem những gì đạt được hiệu suất tại thời gian biên dịch là? – Christophe

+0

@Christophe: vâng, tôi đã sử dụng các tiêu đề được biên dịch trước. Đứng về phía câu hỏi ban đầu của tôi sẽ là: 'Làm thế nào để đo lường các ứng cử viên tiêu đề biên dịch trước?' – richelbilderbeek

Trả lời

0

Điều này đúng là Pimpl hữu ích cho việc biên dịch gia tăng.

Nhưng lý do chính để sử dụng Pimpl là duy trì tính tương thích của ABI. Đây là quy tắc trong công ty trước đây của tôi cho hầu như tất cả các lớp công khai trong API.

Lợi thế khác là bạn cũng có thể phân phối thư viện của mình dưới dạng gói chứa tiêu đề không hiển thị chi tiết triển khai.

Đối với điều này tôi sẽ nói: sử dụng Pimpl bất cứ khi nào có thể.

Một bài viết rất tốt trong những chi tiết thực hiện Qt Pimpl và những lợi ích: https://wiki.qt.io/D-Pointer

Vấn đề thời gian biên dịch phải được giải quyết với:

  • sử dụng tiêu đề precompiled
  • chia dự án lớn của bạn thành nhỏ bằng tần số chạm mã. Các bộ phận không thay đổi thường có thể được biên dịch trong thư viện và được xuất bản trong kho lưu trữ cục bộ mà những người khác tham chiếu dự án theo phiên bản.
  • ...
+0

Cảm ơn bạn vì đã khai sáng cho tôi về những điểm này. Tuy nhiên, câu hỏi của tôi là, làm thế nào để đo lường nơi sử dụng một pimpl sẽ cung cấp cho sự gia tăng nhất trong thời gian biên dịch. Gần nhất với câu trả lời đó là đề xuất của bạn về 'chia dự án lớn của bạn thành những dự án nhỏ bằng tần số chạm mã'. Câu hỏi của tôi là: 'Làm thế nào để bạn đo lường điều đó?' – richelbilderbeek

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