From 6d288389a4872b2d1d2fb7bf906cb64ca3227fb7 Mon Sep 17 00:00:00 2001 From: Fletcher Dunn Date: Sun, 5 Apr 2020 18:11:43 -0700 Subject: [PATCH] Optimize Rate_t - Do not increment both fields, just increment the current interval, and then roll that into the total occasionally. - Delete peak rate stat, since we were never using it. --- .../steamnetworking_statsutils.h | 14 +++++--------- .../steamnetworkingsockets_stats.cpp | 8 ++++---- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/steamnetworkingsockets/steamnetworking_statsutils.h b/src/steamnetworkingsockets/steamnetworking_statsutils.h index 27e8b70..de5e8e5 100644 --- a/src/steamnetworkingsockets/steamnetworking_statsutils.h +++ b/src/steamnetworkingsockets/steamnetworking_statsutils.h @@ -60,33 +60,29 @@ struct Rate_t { void Reset() { memset( this, 0, sizeof(*this) ); } - int64 m_nTotal; int64 m_nCurrentInterval; - //int64 m_nCurrentLongInterval; + int64 m_nAccumulator; // does not include the currentinterval float m_flRate; - float m_flPeakRate; + + int64 Total() const { return m_nAccumulator + m_nCurrentInterval; } inline void Process( int64 nIncrement ) { - m_nTotal += nIncrement; m_nCurrentInterval += nIncrement; - //m_nCurrentLongInterval += nIncrement; } inline void UpdateInterval( float flIntervalDuration ) { m_flRate = float(m_nCurrentInterval) / flIntervalDuration; - m_flPeakRate = Max( m_flPeakRate, m_flRate ); + m_nAccumulator += m_nCurrentInterval; m_nCurrentInterval = 0; } inline void operator+=( const Rate_t &x ) { - m_nTotal += x.m_nTotal; m_nCurrentInterval += x.m_nCurrentInterval; - //m_nCurrentLongInterval += x.m_nCurrentLongInterval; + m_nAccumulator += x.m_nAccumulator; m_flRate += x.m_flRate; - // !NOTE: Don't aggregate peak. It's ambiguous whether we should take the sum or max. } }; diff --git a/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp b/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp index 60d52a2..786b5fb 100644 --- a/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp +++ b/src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp @@ -643,10 +643,10 @@ void LinkStatsTrackerBase::GetInstantaneousStats( SteamDatagramLinkInstantaneous void LinkStatsTrackerBase::GetLifetimeStats( SteamDatagramLinkLifetimeStats &s ) const { - s.m_nPacketsSent = m_sent.m_packets.m_nTotal; - s.m_nBytesSent = m_sent.m_bytes.m_nTotal; - s.m_nPacketsRecv = m_recv.m_packets.m_nTotal; - s.m_nBytesRecv = m_recv.m_bytes.m_nTotal; + s.m_nPacketsSent = m_sent.m_packets.Total(); + s.m_nBytesSent = m_sent.m_bytes.Total(); + s.m_nPacketsRecv = m_recv.m_packets.Total(); + s.m_nBytesRecv = m_recv.m_bytes.Total(); s.m_nPktsRecvSequenced = m_nPktsRecvSequenced; s.m_nPktsRecvDropped = m_nPktsRecvDropped; s.m_nPktsRecvOutOfOrder = m_nPktsRecvOutOfOrder;