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.
This commit is contained in:
Fletcher Dunn
2020-04-05 18:11:43 -07:00
parent 4cefcee1c4
commit 6d288389a4
2 changed files with 9 additions and 13 deletions
@@ -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.
}
};
@@ -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;