2012-06-12 35 views
6

Tôi có một chức năng chỉ thực hiện một số thao tác như gia số. Tôi đã tuyên bố rằng là inline và với số __attribute__((hot)).tác động hiệu suất của kết hợp "nóng" và "nội tuyến" cho định nghĩa hàm

Gcc Doc gợi ý sau đây để hot thuộc tính:

Thuộc tính nóng được sử dụng để thông báo cho trình biên dịch rằng một chức năng là một điểm nóng của chương trình biên dịch. Chức năng được tối ưu hóa nhiều hơn tích cực và trên nhiều mục tiêu nó được đặt vào phần phụ đặc biệt của phần văn bản để tất cả các chức năng nóng xuất hiện gần nhau cải thiện địa phương.

có thể được hiểu là không cho các chức năng nóng không được đặt ở địa chỉ thấp hơn của bản đồ địa chỉ quy trình. Nhưng inline các cuộc gọi chức năng được cho là được thay thế bằng mã của chúng theo nghĩa đen. Vậy câu hỏi là sự kết hợp giữa inlinehot thực sự hoạt động như thế nào?

Trả lời

1

Xem When should I write the keyword 'inline' for a function/method? để có giải thích khá tốt về từ khóa inline. Có vẻ như mâu thuẫn với việc khai báo hàm là hotinline; nếu hàm không được xác định trong tệp tiêu đề hoặc không được xác định trong nhiều đơn vị biên dịch thì bạn không nên khai báo hàm đó là inline.

Thật vậy, quyết định thay thế cuộc gọi hàm bằng định nghĩa chức năng và đặt nó là "trực tuyến" tùy thuộc vào trình biên dịch. Vì vậy, sự kết hợp của inlinehot có thể chỉ bỏ qua phần inline và đặt nó trong phần text.hot của chương trình. Trình liên kết là phần duy nhất của quá trình thực sự quan tâm đến từ khóa inline và sau đó nó không nhất thiết phải làm những gì bạn nghĩ.

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