-
Notifications
You must be signed in to change notification settings - Fork 2
/
HammerTime.h
55 lines (41 loc) · 1.34 KB
/
HammerTime.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
* Author: Kyle Beyer
* Last Updated: 11/30/17
*
*/
#ifndef _TIME_HEADER_
#define _TIME_HEADER_
#include <map>
#include <vector>
#include <fstream>
#include <iostream>
#include <string>
#include <time.h> /* clock_t, clock, CLOCKS_PER_SEC */
#include "Utility.h"
using std::string;
using std::vector;
class HammerTime {
// this class is for timeing various subroutines in transport
// Each history, any function can be timed by calling start and end on either side of it
// At the beginning and end of each history, startHist() and endHist() should be called, so as to calculate average history time
// There are multiple functions to get or print the results of the timer
private:
std::map<string , double > results;
std::map<string , int > calls;
std::map<string , clock_t > currentTimes;
std::map<string , double > avgResults;
string outFilename;
public:
HammerTime() {};
~HammerTime() {};
void setOutFilename( string filename ) { outFilename = filename; };
void startHist();
void endHist();
void startTimer( string key );
void endTimer( string key );
std::map<string , double> getAvgResults();
void printAvgResults();
double getAvgResult( string key );
double getAvgHistoryTime();
};
#endif