From f092ddb49e7b25d6e3e03dbc7db85a3251688435 Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Fri, 16 Apr 2010 16:06:17 +0000 Subject: [PATCH] make the sliding average class a template --- include/libtorrent/disk_io_thread.hpp | 4 ++-- include/libtorrent/sliding_average.hpp | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/libtorrent/disk_io_thread.hpp b/include/libtorrent/disk_io_thread.hpp index d65e59f4a..3e195c3a1 100644 --- a/include/libtorrent/disk_io_thread.hpp +++ b/include/libtorrent/disk_io_thread.hpp @@ -422,10 +422,10 @@ namespace libtorrent cache_status m_cache_stats; // keeps average queue time for disk jobs (in microseconds) - sliding_average m_queue_time; + sliding_average<512> m_queue_time; // average read time for cache misses (in microseconds) - sliding_average m_read_time; + sliding_average<512> m_read_time; #ifdef TORRENT_DISK_STATS std::ofstream m_log; diff --git a/include/libtorrent/sliding_average.hpp b/include/libtorrent/sliding_average.hpp index f32c93042..8c0a689d2 100644 --- a/include/libtorrent/sliding_average.hpp +++ b/include/libtorrent/sliding_average.hpp @@ -35,6 +35,7 @@ namespace libtorrent // a sliding average accumulator. Add samples to it and it // keeps track of a sliding mean value and an average deviation // from that average. +template struct sliding_average { sliding_average(): m_mean(-1), m_average_deviation(-1) {} @@ -48,14 +49,15 @@ struct sliding_average } int deviation = abs(m_mean - s); - m_mean = m_mean - m_mean / 16 + s / 16; + m_mean = m_mean - m_mean / history_size + s / history_size; if (m_average_deviation == -1) { m_average_deviation = deviation; return; } - m_average_deviation = m_average_deviation - m_average_deviation / 16 + deviation / 16; + m_average_deviation = m_average_deviation - m_average_deviation + / history_size + deviation / history_size; } int mean() const { return m_mean != -1 ? m_mean : 0; }