代码Profile
来源:互联网 发布:网络口碑营销失败 编辑:程序博客网 时间:2024/05/29 03:16
#ifdef DEBUG_CODES_TIME
void timer_start(timespec *aStartTime)
{
clock_gettime(CLOCK_REALTIME, aStartTime);
}
long timer_end(timespec *aStartTime)
{
timespec endTime;
clock_gettime(CLOCK_REALTIME, &endTime);
long totalTimeMs = (endTime.tv_sec * 1000 + endTime.tv_nsec / 1000000) - (aStartTime->tv_sec * 1000 + aStartTime->tv_nsec / 1000000);
return totalTimeMs;
}
clock_t _timing_clock = 0;
void timer_handler(int sig)
{
_timing_clock = clock();
}
__attribute((constructor)) void timing_init()
{
signal(SIGALRM, timer_handler);
struct itimerval tick;
memset(&tick, 0, sizeof(tick));
tick.it_value.tv_usec = 1;
tick.it_interval.tv_usec = 10000; //微秒
setitimer(ITIMER_REAL, &tick, NULL);
printf("(debug) initialize timing clock to %f seconds\n", tick.it_interval.tv_usec / 1000000.0);
}
#else
#define timer_start(ts)
#define timer_end(ts) -1
#endif
int main()
{
timespec ts;
timer_start(&ts);
for(int i=0; i<1000000; ++i);
long ret = timer_end(&ts);
printf("Result: %ld \n",ret);
return 0;
$./a.out
(debug) initialize timing clock to 0.010000 seconds
$./a.out
Result: -1
void timer_start(timespec *aStartTime)
{
clock_gettime(CLOCK_REALTIME, aStartTime);
}
long timer_end(timespec *aStartTime)
{
timespec endTime;
clock_gettime(CLOCK_REALTIME, &endTime);
long totalTimeMs = (endTime.tv_sec * 1000 + endTime.tv_nsec / 1000000) - (aStartTime->tv_sec * 1000 + aStartTime->tv_nsec / 1000000);
return totalTimeMs;
}
clock_t _timing_clock = 0;
void timer_handler(int sig)
{
_timing_clock = clock();
}
__attribute((constructor)) void timing_init()
{
signal(SIGALRM, timer_handler);
struct itimerval tick;
memset(&tick, 0, sizeof(tick));
tick.it_value.tv_usec = 1;
tick.it_interval.tv_usec = 10000; //微秒
setitimer(ITIMER_REAL, &tick, NULL);
printf("(debug) initialize timing clock to %f seconds\n", tick.it_interval.tv_usec / 1000000.0);
}
#else
#define timer_start(ts)
#define timer_end(ts) -1
#endif
int main()
{
timespec ts;
timer_start(&ts);
for(int i=0; i<1000000; ++i);
long ret = timer_end(&ts);
printf("Result: %ld \n",ret);
return 0;
}
调试版:
$g++ test_timer.c -DDEBUG_CODES_TIME -lrt$./a.out
(debug) initialize timing clock to 0.010000 seconds
Result: 4
发布版:
$g++ test_timer.c -lrt$./a.out
Result: -1
0 0
- 代码Profile
- 读 PetShop代码(Profile篇)
- Profile购物车代码片段
- 读 PetShop代码(Profile篇)
- Gcc中使用profile工具优化代码
- Gcc中使用profile工具优化代码
- 关于linux profile 文件中如下代码
- profile
- profile
- profile
- profile
- Profile
- Profile
- PROFILE
- profile
- Profile
- profile
- profile
- 需要将当前数据库的兼容级别设置为更高的值
- 数据结构之线性表实现
- 查看本机IP地址
- 【讀書筆記】人人都是产品经理
- jsp+servlet+javabean实现数据分页
- 代码Profile
- Leetcode: Median of Two Sorted Arrays 理解分析
- Ubuntu学习积累
- 记录自己最初的脚印
- extends Thread 与 implements Runnable 的区别
- easyui 校验扩展
- 免费JSON格式的服务接口
- 【讀書筆記】高效能人士的七个习惯
- 上篇博客添加行的bug