|
Blender
V2.59
|
00001 /* 00002 * $Id: KX_TimeLogger.h 35063 2011-02-22 10:33:14Z jesterking $ 00003 * 00004 * ***** BEGIN GPL LICENSE BLOCK ***** 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License 00008 * as published by the Free Software Foundation; either version 2 00009 * of the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software Foundation, 00018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 * 00020 * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. 00021 * All rights reserved. 00022 * 00023 * The Original Code is: all of this file. 00024 * 00025 * Contributor(s): none yet. 00026 * 00027 * ***** END GPL LICENSE BLOCK ***** 00028 */ 00029 00034 #ifndef __KX_TIME_LOGGER_H 00035 #define __KX_TIME_LOGGER_H 00036 00037 #if defined(WIN32) && !defined(FREE_WINDOWS) 00038 #pragma warning (disable:4786) // suppress stl-MSVC debug info warning 00039 #endif 00040 00041 #include <deque> 00042 00043 #ifdef WITH_CXX_GUARDEDALLOC 00044 #include "MEM_guardedalloc.h" 00045 #endif 00046 00050 class KX_TimeLogger { 00051 public: 00056 KX_TimeLogger(unsigned int maxNumMeasurements = 10); 00057 00061 virtual ~KX_TimeLogger(void); 00062 00066 virtual void SetMaxNumMeasurements(unsigned int maxNumMeasurements); 00067 00071 virtual unsigned int GetMaxNumMeasurements(void) const; 00072 00077 virtual void StartLog(double now); 00078 00083 virtual void EndLog(double now); 00084 00089 virtual void NextMeasurement(double now); 00090 00095 virtual double GetAverage(void) const; 00096 00097 protected: 00099 std::deque<double> m_measurements; 00100 00102 unsigned int m_maxNumMeasurements; 00103 00105 double m_logStart; 00106 00108 bool m_logging; 00109 00110 00111 #ifdef WITH_CXX_GUARDEDALLOC 00112 public: 00113 void *operator new(size_t num_bytes) { return MEM_mallocN(num_bytes, "GE:KX_TimeLogger"); } 00114 void operator delete( void *mem ) { MEM_freeN(mem); } 00115 #endif 00116 }; 00117 00118 #endif // __KX_TIME_LOGGER_H 00119