鱼C论坛

 找回密码
 立即注册
查看: 2525|回复: 1

得到线程的执行时间

[复制链接]
发表于 2015-4-14 16:08:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        有的时候,想要获得线程执行一个任务的所花费的时间,你可以使用GetTickCount()(32位Windows环境,不包括Windows Vista)或者GetTickCount64()(Windows Vista环境)函数来获得当前的时间。两次执行该函数,并作差运算即可。但是这需要在线程不被打断的情况下才是有效的。
        可以使用GetThreadTimes函数来获得一个线程的运行时间。
WINBASEAPI
BOOL
WINAPI
GetThreadTimes(
    _In_ HANDLE hThread,
    _Out_ LPFILETIME lpCreationTime,
    _Out_ LPFILETIME lpExitTime,
    _Out_ LPFILETIME lpKernelTime,
    _Out_ LPFILETIME lpUserTime
    );
  该函数取得指定线程的4个时间:
1、创建时间:绝对数值,单位100ns,指明线程创建的时间
2、退出时间:绝对数值,单位100ns,指明线程退出的时间
3、内核时间:相对数值,单位100ns,指明线程运行操作系统代码花费的时间
4、用户时间:相对数值,单位100ns,指明线程运行用户代码花费的时间
可以如下使用该函数:
GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
               &ftKernelTimeStart, &ftUserTimeStart);    //取得开始时间

//这里可以执行特定的任务和算法

GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
               &ftKernelTimeEnd, &ftUserTimeEnd);    //取得结束时间
    上面的代码两次呼叫GetThreadTimes函数获得当前线程运行的时间,只要将“内核时间”和“用户时间”的参数由FILETIME类型转换为ULONGLNOG类型,然后作差运算即可。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-6 12:35:00 | 显示全部楼层
感谢分享!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 10:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表