libStatGen Software  1
Performance.h
1 /*
2  * Copyright (c) 2009 Regents of the University of Michigan
3  *
4  * Permission is hereby granted, free of charge, to any person
5  * obtaining a copy of this software and associated documentation
6  * files (the "Software"), to deal in the Software without
7  * restriction, including without limitation the rights to use,
8  * copy, modify, merge, publish, distribute, sublicense, and/or sell
9  * copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following
11  * conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23  * OTHER DEALINGS IN THE SOFTWARE.
24  */
25 
26 #ifndef _PERFORMANCE_H
27 #define _PERFORMANCE_H
28 
29 #include <sys/time.h>
30 #include <time.h>
31 
32 class Timing
33 {
34  timeval startInterval;
35  timeval endInterval;
36 public:
37  Timing()
38  {
39  start();
40  }
41  void start();
42  void end();
43  double interval();
44 };
45 
46 inline void Timing::start()
47 {
48  gettimeofday(&startInterval, NULL);
49 }
50 
51 inline void Timing::end()
52 {
53  gettimeofday(&endInterval, NULL);
54 }
55 
56 ///
57 /// Return time interval between start() and end()
58 /// @return elapsed time in seconds
59 ///
60 inline double Timing::interval()
61 {
62  return (endInterval.tv_sec + (endInterval.tv_usec/1000000.0)) -
63  (startInterval.tv_sec + (startInterval.tv_usec/1000000.0));
64 }
65 
66 #endif
Timing
Definition: Performance.h:32
Timing::interval
double interval()
Return time interval between start() and end()
Definition: Performance.h:60