diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-31 15:27:39 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-07-31 15:27:39 +0000 |
| commit | 6ccefc2dbccb39f9f0235b2afde941b0e4a32e58 (patch) | |
| tree | f93da87391cba06bf136faa44854b1c62896613c /src/SpeedCalc.cc | |
| parent | dfe3b9bf15fcc579c7f5414939e568e5e4b2104e (diff) | |
2008-08-01 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Avoid repeated call of gettimeofday() when calculating speed.
* src/SpeedCalc.cc
* src/SpeedCalc.h
Diffstat (limited to 'src/SpeedCalc.cc')
| -rw-r--r-- | src/SpeedCalc.cc | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/SpeedCalc.cc b/src/SpeedCalc.cc index d4fa4481..94921c71 100644 --- a/src/SpeedCalc.cc +++ b/src/SpeedCalc.cc @@ -59,12 +59,12 @@ void SpeedCalc::reset() { } unsigned int SpeedCalc::calculateSpeed() { - uint64_t milliElapsed = cpArray[sw].differenceInMillis(); + int64_t milliElapsed = cpArray[sw].differenceInMillis(); if(milliElapsed) { unsigned int speed = lengthArray[sw]*1000/milliElapsed; prevSpeed = speed; maxSpeed = std::max(speed, maxSpeed); - if(isIntervalOver()) { + if(isIntervalOver(milliElapsed)) { changeSw(); } return speed; @@ -74,12 +74,12 @@ unsigned int SpeedCalc::calculateSpeed() { } unsigned int SpeedCalc::calculateSpeed(const struct timeval& now) { - uint64_t milliElapsed = cpArray[sw].differenceInMillis(now); + int64_t milliElapsed = cpArray[sw].differenceInMillis(now); if(milliElapsed) { unsigned int speed = lengthArray[sw]*1000/milliElapsed; prevSpeed = speed; maxSpeed = std::max(speed, maxSpeed); - if(isIntervalOver()) { + if(isIntervalOver(milliElapsed)) { changeSw(); } return speed; @@ -101,6 +101,11 @@ bool SpeedCalc::isIntervalOver() const { return nextInterval <= cpArray[sw].difference(); } +bool SpeedCalc::isIntervalOver(int64_t milliElapsed) const +{ + return nextInterval <= milliElapsed/1000; +} + void SpeedCalc::changeSw() { lengthArray[sw] = 0; cpArray[sw].reset(); |
