网上大部分用clock函数,在线程中计算某个函数运行时间,很不精确
#ifndef PROFILER_H
#define PROFILER_H
#include <time.h>
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
class profiler
{
public:
profiler(const char* func_name)
{
gettimeofday(&tv, NULL);
m_func_name = func_name;
}
~profiler()
{
struct timeval tv2;
gettimeofday(&tv2, NULL);
long cost = (tv2.tv_sec - tv.tv_sec) * 1000000 + (tv2.tv_usec - tv.tv_usec);
printf("[%s]cost=%d ms\n", m_func_name, cost / 1000);
}
private:
struct timeval tv;
const char * m_func_name;
};
#define PROFILER() profiler ____profiler_instance##__LINE__(__FUNCTION__)
#endif // PROFILER_H
不精确的做法:
static clock_t m_cockStart;
void closkStart()
{
m_cockStart = clock();
}
void clockFinish(const char* msg)
{
clock_t finish;
double total_time;
finish = clock();
total_time = (double)(finish-m_cockStart) / CLOCKS_PER_SEC;
printf( "%s:%f seconds\n", msg, total_time);
}