39 {
40 struct timeval tv;
41
42 if (!m_started) return;
43
44 gettimeofday(&tv, 0);
45 m_started = false;
46
47 if (!m_paused) {
48 float mtime;
49 int secs, usecs;
50
51 if (tv.tv_sec >= m_startTime.tv_sec) {
52 secs = tv.tv_sec - m_startTime.tv_sec;
53 } else {
54 secs = tv.tv_sec - m_startTime.tv_sec +
SecsInDay;
55 }
56 usecs = tv.tv_usec - m_startTime.tv_usec;
57 mtime = static_cast<float>(secs)*1000. + static_cast<float>(usecs)/1000.;
58
59
60 m_elapsed += mtime;
61
62 }
63
64
65 double denom = static_cast <double> (++m_numberOfMeasurements);
66 double d = m_elapsed - m_mean;
67 m_mean += d / denom;
68 double dd = m_elapsed*m_elapsed - m_ms;
69 m_ms += dd / denom;
70
71
72 m_meanVal += static_cast <double> (m_propVal - m_meanVal) / denom;
73 if (m_propVal !=0) {
74 double timePerObject = m_elapsed/static_cast <double>(m_propVal);
75 m_meanTimePerObject += static_cast <double> (timePerObject - m_meanTimePerObject) /
76 static_cast<double> (++m_NmeanTimePerObject);
77 }
78 }