Chris@1256
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@1256
|
2
|
Chris@1256
|
3 /*
|
Chris@1256
|
4 Sonic Visualiser
|
Chris@1256
|
5 An audio file viewer and annotation editor.
|
Chris@1256
|
6 Centre for Digital Music, Queen Mary, University of London.
|
Chris@1256
|
7
|
Chris@1256
|
8 This program is free software; you can redistribute it and/or
|
Chris@1256
|
9 modify it under the terms of the GNU General Public License as
|
Chris@1256
|
10 published by the Free Software Foundation; either version 2 of the
|
Chris@1256
|
11 License, or (at your option) any later version. See the file
|
Chris@1256
|
12 COPYING included with this distribution for more information.
|
Chris@1256
|
13 */
|
Chris@1256
|
14
|
Chris@1256
|
15 #ifndef HIT_COUNT_H
|
Chris@1256
|
16 #define HIT_COUNT_H
|
Chris@1256
|
17
|
Chris@1256
|
18 #include <string>
|
Chris@1256
|
19 #include <iostream>
|
Chris@1256
|
20
|
Chris@1256
|
21 /**
|
Chris@1256
|
22 * Profile class for counting cache hits and the like.
|
Chris@1256
|
23 */
|
Chris@1570
|
24 #ifndef NO_HIT_COUNTS
|
Chris@1570
|
25
|
Chris@1256
|
26 class HitCount
|
Chris@1256
|
27 {
|
Chris@1256
|
28 public:
|
Chris@1256
|
29 HitCount(std::string name) :
|
Chris@1429
|
30 m_name(name),
|
Chris@1429
|
31 m_hit(0),
|
Chris@1429
|
32 m_partial(0),
|
Chris@1429
|
33 m_miss(0)
|
Chris@1256
|
34 { }
|
Chris@1256
|
35
|
Chris@1256
|
36 ~HitCount() {
|
Chris@1429
|
37 using namespace std;
|
Chris@1429
|
38 int total = m_hit + m_partial + m_miss;
|
Chris@1429
|
39 cerr << "Hit count: " << m_name << ": ";
|
Chris@1429
|
40 if (m_partial > 0) {
|
Chris@1429
|
41 cerr << m_hit << " hits, " << m_partial << " partial, "
|
Chris@1429
|
42 << m_miss << " misses";
|
Chris@1429
|
43 } else {
|
Chris@1429
|
44 cerr << m_hit << " hits, " << m_miss << " misses";
|
Chris@1429
|
45 }
|
Chris@1429
|
46 if (total > 0) {
|
Chris@1429
|
47 if (m_partial > 0) {
|
Chris@1429
|
48 cerr << " (" << ((m_hit * 100.0) / total) << "%, "
|
Chris@1429
|
49 << ((m_partial * 100.0) / total) << "%, "
|
Chris@1429
|
50 << ((m_miss * 100.0) / total) << "%)";
|
Chris@1429
|
51 } else {
|
Chris@1429
|
52 cerr << " (" << ((m_hit * 100.0) / total) << "%, "
|
Chris@1429
|
53 << ((m_miss * 100.0) / total) << "%)";
|
Chris@1429
|
54 }
|
Chris@1429
|
55 }
|
Chris@1429
|
56 cerr << endl;
|
Chris@1256
|
57 }
|
Chris@1256
|
58
|
Chris@1256
|
59 void hit() { ++m_hit; }
|
Chris@1256
|
60 void partial() { ++m_partial; }
|
Chris@1256
|
61 void miss() { ++m_miss; }
|
Chris@1256
|
62
|
Chris@1256
|
63 private:
|
Chris@1256
|
64 std::string m_name;
|
Chris@1256
|
65 int m_hit;
|
Chris@1256
|
66 int m_partial;
|
Chris@1256
|
67 int m_miss;
|
Chris@1256
|
68 };
|
Chris@1256
|
69
|
Chris@1570
|
70 #else // NO_HIT_COUNTS
|
Chris@1570
|
71
|
Chris@1570
|
72 class HitCount
|
Chris@1570
|
73 {
|
Chris@1570
|
74 public:
|
Chris@1570
|
75 HitCount(std::string) {}
|
Chris@1570
|
76
|
Chris@1570
|
77 void hit() {}
|
Chris@1570
|
78 void partial() {}
|
Chris@1570
|
79 void miss() {}
|
Chris@1570
|
80 };
|
Chris@1570
|
81
|
Chris@1256
|
82 #endif
|
Chris@1570
|
83
|
Chris@1570
|
84 #endif
|