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