Display moving average of speed.
Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
parent
e68748a158
commit
eba2cea5ca
2 changed files with 9 additions and 7 deletions
|
@ -162,14 +162,16 @@ namespace
|
||||||
VideoRedrawScreen();
|
VideoRedrawScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!DiskIsSpinning())
|
|
||||||
{
|
|
||||||
const auto end = std::chrono::steady_clock::now();
|
const auto end = std::chrono::steady_clock::now();
|
||||||
const auto diff = end - start;
|
const auto diff = end - start;
|
||||||
const long us = std::chrono::duration_cast<std::chrono::microseconds>(diff).count();
|
const long us = std::chrono::duration_cast<std::chrono::microseconds>(diff).count();
|
||||||
|
|
||||||
g_relativeSpeed = double(us) / double(nExecutionPeriodUsec);
|
const double coeff = exp(-0.000001 * nExecutionPeriodUsec); // 0.36 after 1 second
|
||||||
|
|
||||||
|
g_relativeSpeed = g_relativeSpeed * coeff + double(us) / double(nExecutionPeriodUsec) * (1.0 - coeff);
|
||||||
|
|
||||||
|
if (!DiskIsSpinning())
|
||||||
|
{
|
||||||
if (us < nExecutionPeriodUsec)
|
if (us < nExecutionPeriodUsec)
|
||||||
{
|
{
|
||||||
usleep(nExecutionPeriodUsec - us);
|
usleep(nExecutionPeriodUsec - us);
|
||||||
|
|
|
@ -150,7 +150,7 @@ namespace
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double g_relativeSpeed = 0;
|
double g_relativeSpeed = 1.0;
|
||||||
|
|
||||||
void output(const char *fmt, ...)
|
void output(const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue