计时器.h:
class Timer
{
public:
void start();
void printTimeAndRestart(const char* msg);
};
namespace Timing { static Timer timer; }
计时器.cpp:
#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
timer 将在许多不同的文件中使用,例如:
Timing::timer.start();
...
Timing::timer.printTimeAndRestart("Operation X took :");
如果应用程序对性能非常敏感并且经常调用计时器,那么在未定义 DO_TIMING 时调用空方法会影响性能吗?什么是实现隔离计时器的更好选择(无需重新编译整个项目以打开/关闭),这在关闭时根本不会影响性能。
到目前为止,我只能想到定义宏,例如
#ifdef DO_TIMING
#define START_TIMING()
Timing::timer.start();
#endif
#else
#define START_TIMING()
#endif
并使用它们代替 Timing::timer.start(); 但这需要重新编译整个代码来打开/关闭它们......