Timer.h:調用空類方法是否會影響性能?
class Timer
{
public:
void start();
void printTimeAndRestart(const char* msg);
};
namespace Timing { static Timer timer; }
Timer.cpp:
Timing::timer.start();
...
Timing::timer.printTimeAndRestart("Operation X took :");
如果應用程序是非常敏感的性能和:
#ifdef DO_TIMING
//implementation
void Timer::start() { ... };
void Timer::printTimeAndRestart(const char* msg) { ... };
#else
//empty - do not do timing
void Timer::start() {};
void Timer::printTimeAndRestart(const char* /*msg*/) {};
#endif
計時器會在許多不同的文件等中定時器經常被調用,當DO_TIMING未定義時會調用空方法會影響性能?什麼是實現隔離定時器的更好選擇(無需重新編譯整個項目來打開/關閉),關閉時不會影響性能。
到目前爲止,我只能想到定義宏像
#ifdef DO_TIMING
#define START_TIMING()
Timing::timer.start();
#endif
#else
#define START_TIMING()
#endif
,並使用他們,而不是定時:: timer.start的();但這需要重新編譯整個代碼將其打開/關閉...
你嘗試過嗎? – Default 2013-03-21 15:56:34
還沒有 - 在執行它的過程中,如上所述,但我張貼看看有什麼其他的設計方案/如果有可能通過查看設計來分辨性能是否會立即受到影響 – 2013-03-21 15:59:46