Timer::Timer(Name name, StructuredLogEntry* log_entry) : m_name(name) , m_finished(false) , m_start(getCPUTimeNanos()) , m_start_wall(getWallClockMicros()) , m_log_entry(log_entry) { }
void Timer::end() { assert(!m_finished); auto const finish = getCPUTimeNanos(); auto const elapsed = finish - m_start; auto& counter = (*s_counters)[m_name]; counter.total += elapsed; ++counter.count; m_finished = true; }
void Timer::end() { if (!RuntimeOption::EvalJitTimer) return; assert(!m_finished); auto const finish = getCPUTimeNanos(); auto const elapsed = finish - m_start; auto& counter = s_counters[m_name]; counter.total += elapsed; ++counter.count; m_finished = true; }
int64_t Timer::stop() { if (!RuntimeOption::EvalJitTimer) return 0; assertx(!m_finished); auto const elapsed = getCPUTimeNanos() - m_start; auto const elapsed_wall_clock = getWallClockMicros() - m_start_wall; if (m_log_entry) { m_log_entry->setInt(std::string(s_names[(size_t)m_name].str) + "_micros", elapsed / 1000); } auto& counter = s_counters[m_name]; counter.total += elapsed; ++counter.count; counter.max = std::max(counter.max, elapsed); counter.wall_time_elapsed += elapsed_wall_clock; m_finished = true; return elapsed; }
Timer::Timer(Name name) : m_name(name) , m_start(getCPUTimeNanos()) , m_finished(false) { }
Timer::Timer(const std::string& name) : m_name(name) , m_start(getCPUTimeNanos()) , m_finished(false) { }