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 | |
| 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')
| -rw-r--r-- | src/SpeedCalc.cc | 13 | ||||
| -rw-r--r-- | src/SpeedCalc.h | 3 |
2 files changed, 12 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(); diff --git a/src/SpeedCalc.h b/src/SpeedCalc.h index 80df7311..c7e3513e 100644 --- a/src/SpeedCalc.h +++ b/src/SpeedCalc.h @@ -52,6 +52,9 @@ private: time_t nextInterval; bool isIntervalOver() const; + + bool isIntervalOver(int64_t milliElapsed) const; + void changeSw(); public: SpeedCalc() { |
