我有一个程序,我在执行过程中记录了不同的东西。现在,这在调试期间一切正常,但是当我发货时,显然我希望根本不会调用日志记录功能。
我记得有一种方法可以在代码中保留日志调用,设置一些变量__debug__
或其他东西,以便简单地忽略那些日志调用,因此他们甚至不创建堆栈框架在运行时减慢执行速度。
我很确定我以前见过这个,但我无法在任何地方找到它。我该怎么做?
最好的模拟是C条件编译:
#define LOGGED
现在而不是:
// code...
log(stuff);
// code...
我可以这样做:
// code...
#ifdef LOGGED
log(stuff);
#endif
// code...
第一个选项每次调用日志函数,即使它没有显示,也使用像python这样的语言,其中函数调用往往很昂贵,特别是在紧密循环中,我想不会堵塞程序很多。
第二个选项更好,因为除非定义LOGGED
,否则log(stuff)
调用甚至不会被编译,它将被完全忽略。
我想在python中实现这一点,因为在我的情况下,日志记录和没有日志记录之间的差异大约是50%的性能差异。