void CProfiler::CountCurrentZone() { assert(std::this_thread::get_id() == m_workThreadId); assert(!m_zoneStack.empty()); auto thisTime = std::chrono::high_resolution_clock::now(); { auto topZoneHandle = m_zoneStack.top(); auto duration = std::chrono::duration_cast<std::chrono::nanoseconds>(thisTime - m_currentTime); AddTimeToZone(topZoneHandle, duration.count()); } m_currentTime = thisTime; }
void CProfiler::EnterZone(ZoneHandle zoneHandle) { assert(std::this_thread::get_id() == m_workThreadId); auto thisTime = boost::chrono::high_resolution_clock::now(); if(!m_zoneStack.empty()) { auto topZoneHandle = m_zoneStack.top(); auto duration = boost::chrono::duration_cast<boost::chrono::microseconds>(thisTime - m_currentTime); AddTimeToZone(topZoneHandle, duration.count()); } m_zoneStack.push(zoneHandle); m_currentTime = thisTime; }