project64/Source/Project64-core/N64System/ProfilingClass.h

45 lines
1.8 KiB
C
Raw Normal View History

2012-12-19 09:30:18 +00:00
/****************************************************************************
* *
2015-11-10 05:21:49 +00:00
* Project64 - A Nintendo 64 emulator. *
2012-12-19 09:30:18 +00:00
* http://www.pj64-emu.com/ *
* Copyright (C) 2012 Project64. All rights reserved. *
* *
* License: *
* GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html *
* *
****************************************************************************/
#pragma once
2015-12-06 09:59:58 +00:00
#include <Project64-core/N64System/N64Types.h>
typedef std::map<SPECIAL_TIMERS, int64_t > PROFILE_ENRTIES;
typedef PROFILE_ENRTIES::iterator PROFILE_ENRTY;
typedef PROFILE_ENRTIES::value_type PROFILE_VALUE;
class CProfiling
{
public:
2015-12-23 19:51:37 +00:00
CProfiling();
2015-12-23 19:51:37 +00:00
//recording timing against current timer, returns the address of the timer stopped
SPECIAL_TIMERS StartTimer(SPECIAL_TIMERS Address);
SPECIAL_TIMERS StopTimer();
2015-12-23 19:51:37 +00:00
//Display the CPU Usage
void ShowCPU_Usage();
2015-12-23 19:51:37 +00:00
//Reset all the counters back to 0
void ResetCounters();
//Generate a log file with the current results, this will also reset the counters
void GenerateLog();
private:
2015-12-23 19:51:37 +00:00
CProfiling(const CProfiling&); // Disable copy constructor
CProfiling& operator=(const CProfiling&); // Disable assignment
2015-12-23 19:51:37 +00:00
SPECIAL_TIMERS m_CurrentTimerAddr;
uint32_t m_CurrentDisplayCount;
uint32_t m_StartTimeHi, m_StartTimeLo; //The Current Timer start time
PROFILE_ENRTIES m_Entries;
};