2010-09-30 26 views
6

Tôi đang viết một số mã nơi có một loạt các hàm thuần túy đơn giản được gọi rất nhiều. Nó hoàn toàn an toàn nếu các chức năng này được tối ưu hóa để được gọi ít thường xuyên hơn.Có tương đương di động với __attribute__ của gcc (thuần túy) không?

Hiện nay tôi đang sử dụng gcc khi biên dịch của tôi và tôi tự hỏi nếu có một cách cầm tay làm:

int foo(int) __attribute__ ((pure)) 

Thông tin về từ khóa tinh khiết có thể được tìm thấy ở đây: http://www.ohse.de/uwe/articles/gcc-attributes.html#func-pure

thế nào tôi sẽ đi về việc thực hiện một cái gì đó như thế này nếu từ khóa tinh khiết không có sẵn?

+2

Mô tả hàm thuần túy nhắc tôi về các hàm tĩnh lớp. Chúng có được cơ hội tối ưu theo cách tương tự với hiệu suất tương đương không? –

Trả lời

5
#ifdef __GNUC__ 
#define __pure __attribute__((pure)) 
#else 
#define __pure 
#endif 

Sử dụng __pure khi bạn cần nó

+0

Tôi thích đề xuất này tuy nhiên tôi đã hy vọng rằng tôi có thể nhận được hiệu suất tương tự ở nơi khác.Nếu tôi không thể tôi sẽ sử dụng điều này mặc dù – shuttle87

+0

nếu bạn muốn hiệu suất đó, làm cho chức năng của bạn ' static inline' trong tiêu đề –

+0

Nội tuyến tĩnh có thực hiện cùng một loại tối ưu hóa như thuộc tính thuần túy không? – shuttle87

7

Không, không có.

+0

:(Tôi nghi ngờ đây là trường hợp. – shuttle87

1

Tôi nghĩ rằng cách cầm tay là nội tuyến chức năng, hy vọng các trình biên dịch sẽ tìm ra phần còn lại.

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