Tôi có một lớp rất cơ bản, đặt tên là Basic, được sử dụng trong hầu hết các tệp khác trong một dự án lớn hơn. Trong một số trường hợp, cần phải có đầu ra gỡ lỗi, nhưng trong chế độ phát hành, điều này không nên được kích hoạt và là một NOOP.Hiệu suất C++, tối ưu hóa trình biên dịch, chức năng trống trong .cpp
Hiện tại có một xác định trong tiêu đề, nút này sẽ bật hoặc tắt makro, tùy thuộc vào cài đặt. Vì vậy, đây chắc chắn là một NOOP, khi tắt. Tôi tự hỏi, nếu tôi có mã sau đây, nếu một trình biên dịch (MSVS/gcc) có thể tối ưu hóa ra các cuộc gọi chức năng, để nó lại là một NOOP. (Bằng cách đó, chuyển đổi có thể ở trong .cpp và chuyển đổi sẽ nhanh hơn nhiều, biên dịch/liên kết thời gian khôn ngoan).
--Header--
void printDebug(const Basic* p);
class Basic {
Basic() {
simpleSetupCode;
// this should be a NOOP in release,
// but constructor could be inlined
printDebug(this);
}
};
--Source--
// PRINT_DEBUG defined somewhere else or here
#if PRINT_DEBUG
void printDebug(const Basic* p) {
// Lengthy debug print
}
#else
void printDebug(const Basic* p) {}
#endif
Người ủng hộ của Ma quỷ: không bao gồm một số lượng lớn các câu hỏi trên trang web này? Tại sao mọi người đến đây? Bởi vì họ không biết. Và bởi vì họ không biết cách tìm hiểu (trong trường hợp này có thể họ không nói lắp ráp), hoặc họ quá lười biếng hoặc vội vã làm như vậy. Câu hỏi thường gặp: chúng tôi có muốn chặn những người lười biếng/vội vã và chỉ trả lời những người thực sự không biết? Một số có thể bị miffed bởi FAQs (và có thể bỏ qua chúng); một số có thể thưởng thức nhận được pints một lần nữa và một lần nữa cho cơ bản cùng một câu hỏi. OP nên có ít nhất là tìm kiếm trang web này (hoặc google), mặc dù – Mawg
@mawg Nó bao gồm rất nhiều công dụng của trang này, và đó là ý kiến của tôi rằng có lẽ 50% các câu hỏi được đăng ở đây không nên hỏi. Điều này đặc biệt được hỏi thời gian và một lần nữa và câu trả lời của tôi là một trong những trung thực - chúng tôi không thể nói những gì optimiser của bạn sẽ làm gì với mã của bạn, chỉ có bạn mới có thể làm điều đó. –
(-1) Vì vậy, câu trả lời của bạn không thực sự "hữu ích" đối với người dùng. Bạn đã không thực sự trả lời câu hỏi của họ, bất kể đó là một câu hỏi thích hợp hay không. Trong thực tế, bạn đã không bỏ phiếu để đóng như trùng lặp. Nếu tôi hỏi "2 + 2" là gì và bạn nói "tự mình tìm ra" bạn không * hữu ích * và bạn không * đúng *. Đúng là tôi nên tự mình tìm ra, nhưng bạn không ** trả lời tôi. Câu trả lời của bạn phải là nhận xét. – DevinB