2012-12-14 12 views
32

GCC thu thập thông tin gì khi tôi bật -fprofile-generate và thực tế tối ưu hóa nào sử dụng thông tin được thu thập (khi đặt cờ -fprofile-use)?Thông tin nào được GCC Profile Guided Optimization (PGO) thu thập và tối ưu hóa nào sử dụng thông tin đó?

Tôi cần trích dẫn tại đây. Tôi đã tìm kiếm một lúc nhưng không tìm thấy bất kỳ tài liệu nào.

Thông tin về tối ưu hóa thời gian liên kết (LTO) sẽ là điểm cộng! = D

Trả lời

7

"Tất cả những gì Lập trình viên nên biết về bộ nhớ" của Ulrich Drepper https://people.freebsd.org/~lstewart/articles/cpumemory.pdf http://www.akkadia.org/drepper/cpumemory.pdf

Trong phần 7,4

  • biên soạn với --profile-tạo tạo .gcno file cho mỗi tập tin đối tượng. (cùng một tệp được sử dụng cho báo cáo phủ sóng gcov)
  • thì bạn phải chạy một vài thử nghiệm, trong thời gian chạy nó ghi lại dữ liệu vùng phủ sóng vào tệp .gcda
  • biên dịch lại với --profile-use: và suy ra nếu một chi nhánh có khả năng (__builtin_expect (.., 1) hoặc không (__builtin_expect (.., 0)

kết quả sẽ chạy nhanh hơn như nó phải được tốt hơn tại tìm nạp trước mã vào bộ nhớ cache hướng dẫn xử lý.