1 /************************************************************************* 2 * * 3 * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. * 4 * All rights reserved. Email: russ@q12.org Web: www.q12.org * 5 * * 6 * This library is free software; you can redistribute it and/or * 7 * modify it under the terms of EITHER: * 8 * (1) The GNU Lesser General Public License as published by the Free * 9 * Software Foundation; either version 2.1 of the License, or (at * 10 * your option) any later version. The text of the GNU Lesser * 11 * General Public License is included with this library in the * 12 * file LICENSE.TXT. * 13 * (2) The BSD-style license that is included with this library in * 14 * the file LICENSE-BSD.TXT. * 15 * * 16 * This library is distributed in the hope that it will be useful, * 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * 19 * LICENSE.TXT and LICENSE-BSD.TXT for more details. * 20 * * 21 *************************************************************************/ 22 23 #ifndef _ODE_TIMER_H_ 24 #define _ODE_TIMER_H_ 25 26 #include <ode/odeconfig.h> 27 28 #ifdef __cplusplus 29 extern "C" { 30 #endif 31 32 33 /* stop watch objects */ 34 35 typedef struct dStopwatch { 36 double time; /* total clock count */ 37 unsigned long cc[2]; /* clock count since last `start' */ 38 } dStopwatch; 39 40 ODE_API void dStopwatchReset (dStopwatch *); 41 ODE_API void dStopwatchStart (dStopwatch *); 42 ODE_API void dStopwatchStop (dStopwatch *); 43 ODE_API double dStopwatchTime (dStopwatch *); /* returns total time in secs */ 44 45 46 /* code timers */ 47 48 ODE_API void dTimerStart (const char *description); /* pass a static string here */ 49 ODE_API void dTimerNow (const char *description); /* pass a static string here */ 50 ODE_API void dTimerEnd(void); 51 52 /* print out a timer report. if `average' is nonzero, print out the average 53 * time for each slot (this is only meaningful if the same start-now-end 54 * calls are being made repeatedly. 55 */ 56 ODE_API void dTimerReport (FILE *fout, int average); 57 58 59 /* resolution */ 60 61 /* returns the timer ticks per second implied by the timing hardware or API. 62 * the actual timer resolution may not be this great. 63 */ 64 ODE_API double dTimerTicksPerSecond(void); 65 66 /* returns an estimate of the actual timer resolution, in seconds. this may 67 * be greater than 1/ticks_per_second. 68 */ 69 ODE_API double dTimerResolution(void); 70 71 72 #ifdef __cplusplus 73 } 74 #endif 75 76 #endif 77