/* when dump, print one line with the cost each uri process used, and reset to zero */ void measureDump(bool getFrom, bool getFromIp) { bEnableMeasure = true; bEnableFrom = getFrom; bEnableFromIp = getFromIp; TSmartLock<CLock> loGuard(measureMutex); uriTimeCount_t::iterator iter; for(iter = uriTimeCount.begin(); iter != uriTimeCount.end(); iter++){ measureData_t &md = iter->second; uint64_t costTime = md.costTime; if(costTime > 0){ uint32_t uri_h = iter->first >> 8; uint32_t uri_t = iter->first & 0x000000ff; LOG_TRACE("measure: %4u|%3u = %8" PRIu64 ", %7u, %7" PRIu64 ", %7" PRIu64 "", uri_h, uri_t, get_usec_interval(0, costTime), md.callTimes, get_usec_interval(0, costTime/md.callTimes), get_usec_interval(0, md.maxTime)); } md.callTimes = 0; md.costTime = 0; md.maxTime = 0; }
double get_cpu_frequency(void) { struct timeval start; struct timeval end; uint64_t tsc_start; uint64_t tsc_end; long usec; if (gettimeofday(&start, 0)) { err(1, "gettimeofday"); } tsc_start = cycle_timer(); usleep(10000); if (gettimeofday(&end, 0)) { err(1, "gettimeofday"); } tsc_end = cycle_timer(); usec = get_usec_interval(&start, &end); return (tsc_end - tsc_start) * 1.0 / usec; }
uint64_t scoped_measure::count_us() { return get_usec_interval(0, count_cycles()); }