首页
论坛
课程
招聘
[旧帖] [求助][求助]请教一个关于GetThreadTimes的问题 0.00雪花
2013-4-22 20:02 858

[旧帖] [求助][求助]请教一个关于GetThreadTimes的问题 0.00雪花

2013-4-22 20:02
858
附代码,附图,一看就明白的
有sleep(1)后获取的时间100次中大部分都是0,跑了好几个小时,屏蔽掉sleep(1)的话时间基本上在48ms左右

与时钟中断有关?还是.......

代码执行 100 * 100万次冒泡排序

【code】
        InitializeAndBeginThread();
        __int64 qwKernelTimeElapsed, qwUserTimeElapsed, qwTotalTimeElapsed;

        int nCount = 0;
        for(; nCount <= 100; nCount++)
        {
                ::GetThreadTimes(::GetCurrentThread(), &tCreateTime, &tExitTime,        &tKernelTime, &tUserTime);

                for (int i=0; i<100000; i++)
                {
                        Func();
                        ::Sleep(1);
                }

                ::GetThreadTimes(::GetCurrentThread(), &tCreateTime, &tExitTime, &tKernelTimeEnd, &tUserTimeEnd);

                qwKernelTimeElapsed = FileTimeToQuadWord(&tKernelTimeEnd) - FileTimeToQuadWord(&tKernelTime);
                qwUserTimeElapsed = FileTimeToQuadWord(&tUserTimeEnd) - FileTimeToQuadWord(&tUserTime);

                qwTotalTimeElapsed = qwKernelTimeElapsed + qwUserTimeElapsed;
                double dTime = NsToMsCast(qwTotalTimeElapsed);

                std::wstring str;
                wchar_t szMsg[MAX_PATH * 5] = {0};
                swprintf(szMsg, L"The Programme with Sleep(1) have cost %lf Ms \r\n", dTime);
       
                str = szMsg;
                ZeroMemory(szMsg, MAX_PATH * 5);
                PushMsg(str);

其中 NsToMsCast 是将时间纳秒转化为毫秒的函数

【公告】 [2022大礼包]《看雪论坛精华22期》发布!收录近1000余篇精华优秀文章!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回