小编Kri*_*hna的帖子

性能分析器:如何使用无符号长度来测量时间(以微秒为单位)?

我正在使用unsigned long来收集性能数据,同时分析应用程序,如下所示

  1. unsigned long time_taken = (unsigned long) ((finish_time_in_nano_sec - start_time_in_nano_sec)/1000);

  2. 将time_taken写入文件.对我的应用程序中调用的每个函数执行此操作.

  3. 现在应用程序执行后,有一个单独的程序读取上面的文件,并总结每个函数所需的时间,包括调用计数,如

func_name aggregate_time call_counts

我遇到的问题是,对于某些函数,aggregate_time字段是一个20位数值,即unsigned long可以容纳的最大值.这不可能是真的,因为我以微秒为单位测量时间并且不会运行我的应用程序超过20秒.那它怎么可能是一个20位数值呢?

你看到步骤1,2和3中的错误吗?

此致,克里希纳

编辑:

1)时间测量:clock_gettime(CLOCK_REALTIME,&start_time); clock_gettime(CLOCK_REALTIME,&finish_time); unsigned long time_taken =(unsigned long)((finish_time.tv_nsec - art_time.tv_nsec)/ 1000);

2)文件写入:fwrite(&time_taken,sizeof(unsigned long),1,datafile);

3)文件读取:fread(&time_taken,sizeof(long),1,datafile);

c c++

3
推荐指数
1
解决办法
1022
查看次数

如何在后台进程上从Windows任务管理器处理"结束任务"?

我写了一个简单的测试程序(TestProgram.exe)来学习如何处理CTRL_CLOSE_EVENT,这是我的观察和我的问题:

1)当我双击TestProgram.exe启动它时,如果我现在转到任务管理器,TestProgram.exe列在"应用程序"下.当我在TestProgram.exe上执行"结束任务"时,我的CTRL_CLOSE_EVENT处理程序被调用.

2)当我打开命令提示符并启动TestProgram.exe时,它在"任务管理器"下的"后台进程"下列出,并且对其执行"结束任务"不会导致CTRL_CLOSE_EVENT.

我的实际应用程序如上面的案例2)中所述使用.当用户在我的应用程序上执行结束任务(在任务管理器中的后台进程下列出)时,我想做一些清理工作.

谢谢,克里希纳

c c++ windows

2
推荐指数
1
解决办法
2766
查看次数

标签 统计

c ×2

c++ ×2

windows ×1