mirror of
https://github.com/ValveSoftware/GameNetworkingSockets.git
synced 2026-05-29 16:20:34 +00:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user