| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        tests/benchmarks/log.cpp
 
- // Purpose:     Log-related benchmarks
 
- // Author:      Vadim Zeitlin
 
- // Created:     2012-01-21
 
- // Copyright:   (c) 2011 Vadim Zeitlin <vadim@wxwidgets.org>
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #include "bench.h"
 
- #include "wx/log.h"
 
- // This class is used to check that the arguments of log functions are not
 
- // evaluated.
 
- struct NotCreated
 
- {
 
-     NotCreated() { wxAbort(); }
 
-     const char* AsStr() const { return "unreachable"; }
 
- };
 
- // Temporarily change the log level to the given one.
 
- class LogLevelSetter
 
- {
 
- public:
 
-     LogLevelSetter(wxLogLevel levelNew)
 
-         : m_levelOld(wxLog::GetLogLevel())
 
-     {
 
-         wxLog::SetLogLevel(levelNew);
 
-     }
 
-     ~LogLevelSetter()
 
-     {
 
-         wxLog::SetLogLevel(m_levelOld);
 
-     }
 
- private:
 
-     const wxLogLevel m_levelOld;
 
-     wxDECLARE_NO_COPY_CLASS(LogLevelSetter);
 
- };
 
- BENCHMARK_FUNC(LogDebugDisabled)
 
- {
 
-     LogLevelSetter level(wxLOG_Info);
 
-     wxLogDebug("Ignored debug message: %s", NotCreated().AsStr());
 
-     return true;
 
- }
 
- BENCHMARK_FUNC(LogTraceDisabled)
 
- {
 
-     LogLevelSetter level(wxLOG_Info);
 
-     wxLogTrace("", NotCreated().AsStr());
 
-     return true;
 
- }
 
- BENCHMARK_FUNC(LogTraceActive)
 
- {
 
-     static bool s_added = false;
 
-     if ( !s_added )
 
-     {
 
-         s_added = true;
 
-         wxLog::AddTraceMask("logbench");
 
-     }
 
-     // Remove the actual logging overhead by simply throwing away the log
 
-     // messages.
 
-     class NulLog : public wxLog
 
-     {
 
-     public:
 
-         NulLog()
 
-             : m_logOld(wxLog::SetActiveTarget(this))
 
-         {
 
-         }
 
-         virtual ~NulLog()
 
-         {
 
-             wxLog::SetActiveTarget(m_logOld);
 
-         }
 
-     protected:
 
-         virtual void DoLogRecord(wxLogLevel,
 
-                                  const wxString&,
 
-                                  const wxLogRecordInfo&)
 
-         {
 
-         }
 
-         wxLog* m_logOld;
 
-     };
 
-     NulLog nulLog;
 
-     wxLogTrace("logbench", "Trace message");
 
-     return true;
 
- }
 
- BENCHMARK_FUNC(LogTraceInactive)
 
- {
 
-     wxLogTrace("bloordyblop", "Trace message");
 
-     return true;
 
- }
 
 
  |