54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
#pragma once
|
|
|
|
class NetworkReceiverPerformanceHelper
|
|
{
|
|
public:
|
|
NetworkReceiverPerformanceHelper( unsigned short _messageID );
|
|
~NetworkReceiverPerformanceHelper();
|
|
|
|
private:
|
|
unsigned short m_messageID;
|
|
LARGE_INTEGER m_startTime;
|
|
LARGE_INTEGER m_endTime;
|
|
};
|
|
|
|
struct PerformanceUnit;
|
|
|
|
class NetworkRecevierPerformanceTracker
|
|
{
|
|
public:
|
|
NetworkRecevierPerformanceTracker()
|
|
{
|
|
LARGE_INTEGER li;
|
|
QueryPerformanceFrequency( &li );
|
|
m_freq = li.QuadPart;
|
|
}
|
|
|
|
__int64 m_freq;
|
|
|
|
std::map< unsigned int, PerformanceUnit > m_data;
|
|
};
|
|
|
|
extern NetworkRecevierPerformanceTracker g_NetworkReceiverPerformanceTracker;
|
|
|
|
|
|
struct PerformanceUnit
|
|
{
|
|
PerformanceUnit()
|
|
{
|
|
m_count = 0;
|
|
m_totalTicks = 0;
|
|
m_totalTime = 0;
|
|
}
|
|
|
|
void addUpThisResult( const __int64 _ticks )
|
|
{
|
|
InterlockedIncrement( &m_count );
|
|
InterlockedExchangeAdd( &m_totalTicks, _ticks );
|
|
InterlockedExchange( &m_totalTime, ( m_totalTicks * 1000 ) / g_NetworkReceiverPerformanceTracker.m_freq );
|
|
}
|
|
|
|
volatile unsigned int m_count;
|
|
volatile unsigned __int64 m_totalTicks;
|
|
volatile unsigned int m_totalTime;
|
|
}; |