[Project64] Cleanup ProfilingClass.cpp

This commit is contained in:
zilmar 2015-12-24 06:51:37 +11:00
parent 50df137466
commit cf2d34fed3
2 changed files with 140 additions and 140 deletions

View File

@ -14,11 +14,11 @@
enum { MAX_FRAMES = 13 }; enum { MAX_FRAMES = 13 };
CProfiling::CProfiling () : CProfiling::CProfiling() :
m_CurrentTimerAddr(Timer_None), m_CurrentTimerAddr(Timer_None),
m_CurrentDisplayCount(MAX_FRAMES), m_CurrentDisplayCount(MAX_FRAMES),
m_StartTimeHi(0), m_StartTimeHi(0),
m_StartTimeLo(0) m_StartTimeLo(0)
{ {
} }
@ -69,8 +69,9 @@ SPECIAL_TIMERS CProfiling::StopTimer() {
PROFILE_ENRTY Entry = m_Entries.find(m_CurrentTimerAddr); PROFILE_ENRTY Entry = m_Entries.find(m_CurrentTimerAddr);
if (Entry != m_Entries.end()) { if (Entry != m_Entries.end()) {
Entry->second += TimeTaken; Entry->second += TimeTaken;
} else { }
m_Entries.insert(PROFILE_ENRTIES::value_type(m_CurrentTimerAddr,TimeTaken)); else {
m_Entries.insert(PROFILE_ENRTIES::value_type(m_CurrentTimerAddr, TimeTaken));
} }
SPECIAL_TIMERS OldTimerAddr = m_CurrentTimerAddr; SPECIAL_TIMERS OldTimerAddr = m_CurrentTimerAddr;
@ -103,14 +104,13 @@ void CProfiling::ShowCPU_Usage() {
Entry = m_Entries.find(Timer_Idel); Entry = m_Entries.find(Timer_Idel);
if (Entry != m_Entries.end()) { Idle = Entry->second; } if (Entry != m_Entries.end()) { Idle = Entry->second; }
TotalTime = CPU + Alist + Dlist + Idle; TotalTime = CPU + Alist + Dlist + Idle;
g_Notify->DisplayMessage(0,stdstr_f("r4300i: %0.1f%c GFX: %0.1f%c Alist: %0.1f%c Idle: %0.1f%c", g_Notify->DisplayMessage(0, stdstr_f("r4300i: %0.1f%c GFX: %0.1f%c Alist: %0.1f%c Idle: %0.1f%c",
(float)(((double)CPU / (double)TotalTime) * 100),'%', (float)(((double)CPU / (double)TotalTime) * 100), '%',
(float)(((double)Dlist / (double)TotalTime) * 100),'%', (float)(((double)Dlist / (double)TotalTime) * 100), '%',
(float)(((double)Alist / (double)TotalTime) * 100),'%', (float)(((double)Alist / (double)TotalTime) * 100), '%',
(float)(((double)Idle / (double)TotalTime) * 100),'%').ToUTF16().c_str()); (float)(((double)Idle / (double)TotalTime) * 100), '%').ToUTF16().c_str());
ResetCounters(); ResetCounters();
} }
@ -133,19 +133,19 @@ void CProfiling::GenerateLog() {
//Get the total time //Get the total time
int64_t TotalTime = 0; int64_t TotalTime = 0;
for (PROFILE_ENRTY itemTime = m_Entries.begin(); itemTime != m_Entries.end(); itemTime++ ) { for (PROFILE_ENRTY itemTime = m_Entries.begin(); itemTime != m_Entries.end(); itemTime++) {
TotalTime += itemTime->second; TotalTime += itemTime->second;
} }
//Create a sortable list of items //Create a sortable list of items
std::vector<PROFILE_VALUE *> ItemList; std::vector<PROFILE_VALUE *> ItemList;
for (PROFILE_ENRTY Entry = m_Entries.begin(); Entry != m_Entries.end(); Entry++ ) { for (PROFILE_ENRTY Entry = m_Entries.begin(); Entry != m_Entries.end(); Entry++) {
ItemList.push_back(&(*Entry)); ItemList.push_back(&(*Entry));
} }
//sort the list with a basic bubble sort //sort the list with a basic bubble sort
for (size_t OuterPass = 0; OuterPass < (ItemList.size() - 1); OuterPass++ ) { for (size_t OuterPass = 0; OuterPass < (ItemList.size() - 1); OuterPass++) {
for (size_t InnerPass = 0; InnerPass < (ItemList.size() - 1); InnerPass++ ) { for (size_t InnerPass = 0; InnerPass < (ItemList.size() - 1); InnerPass++) {
if (ItemList[InnerPass]->second < ItemList[InnerPass + 1]->second) { if (ItemList[InnerPass]->second < ItemList[InnerPass + 1]->second) {
PROFILE_VALUE * TempPtr = ItemList[InnerPass]; PROFILE_VALUE * TempPtr = ItemList[InnerPass];
ItemList[InnerPass] = ItemList[InnerPass + 1]; ItemList[InnerPass] = ItemList[InnerPass + 1];
@ -155,33 +155,33 @@ void CProfiling::GenerateLog() {
} }
TIMER_NAME TimerNames[] = { TIMER_NAME TimerNames[] = {
{Timer_R4300, "R4300"}, { Timer_R4300, "R4300" },
{Timer_RSP_Dlist, "RSP: Dlist"}, { Timer_RSP_Dlist, "RSP: Dlist" },
{Timer_RSP_Alist, "RSP: Alist"}, { Timer_RSP_Alist, "RSP: Alist" },
{Timer_RSP_Unknown, "RSP: Unknown"}, { Timer_RSP_Unknown, "RSP: Unknown" },
{Timer_RefreshScreen, "Refresh Screen"}, { Timer_RefreshScreen, "Refresh Screen" },
{Timer_UpdateScreen, "Update Screen"}, { Timer_UpdateScreen, "Update Screen" },
{Timer_UpdateFPS, "Update FPS"}, { Timer_UpdateFPS, "Update FPS" },
{Timer_FuncLookup, "Function Lookup"}, { Timer_FuncLookup, "Function Lookup" },
{Timer_Done, "Timer_Done"}, { Timer_Done, "Timer_Done" },
{Timer_GetBlockInfo, "Timer_GetBlockInfo"}, { Timer_GetBlockInfo, "Timer_GetBlockInfo" },
{Timer_AnalyseBlock, "Timer_AnalyseBlock"}, { Timer_AnalyseBlock, "Timer_AnalyseBlock" },
{Timer_CompileBlock, "Timer_CompileBlock"}, { Timer_CompileBlock, "Timer_CompileBlock" },
{Timer_CompileDone, "Timer_CompileDone"}, { Timer_CompileDone, "Timer_CompileDone" },
}; };
for (size_t count =0; count < ItemList.size(); count++ ) { for (size_t count = 0; count < ItemList.size(); count++) {
char Buffer[255]; char Buffer[255];
double CpuUsage = ((double)ItemList[count]->second / (double)TotalTime) * 100; double CpuUsage = ((double)ItemList[count]->second / (double)TotalTime) * 100;
if (CpuUsage <= 0.2) { continue; } if (CpuUsage <= 0.2) { continue; }
sprintf(Buffer,"Func 0x%08X",ItemList[count]->first); sprintf(Buffer, "Func 0x%08X", ItemList[count]->first);
for (int NameID = 0; NameID < (sizeof(TimerNames) / sizeof(TIMER_NAME)); NameID++) { for (int NameID = 0; NameID < (sizeof(TimerNames) / sizeof(TIMER_NAME)); NameID++) {
if (ItemList[count]->first == TimerNames[NameID].Timer) { if (ItemList[count]->first == TimerNames[NameID].Timer) {
strcpy(Buffer,TimerNames[NameID].Name); strcpy(Buffer, TimerNames[NameID].Name);
break; break;
} }
} }
Log.LogF("%s\t%2.2f",Buffer, CpuUsage); Log.LogF("%s\t%2.2f", Buffer, CpuUsage);
} }
} }