首页
社区
课程
招聘
[旧帖] [原创]测试线程时间片大小 0.00雪花
发表于: 2010-4-2 17:41 914

[旧帖] [原创]测试线程时间片大小 0.00雪花

2010-4-2 17:41
914
闲来写了一个测试线程时间片大小的程序玩玩,呵呵
在我的机器上测试下来,每次都不一样,大约在15到65毫秒居多,哪位大牛来解释一下?

        LARGE_INTEGER nFrequency;
        LARGE_INTEGER nCounterStart;
        LARGE_INTEGER nCounterEnd;

        QueryPerformanceFrequency(&nFrequency);
       
        BOOL bLoop = TRUE;
        while (bLoop)
        {
                LARGE_INTEGER nCounterStart1;
                LARGE_INTEGER nCounterEnd1;

                QueryPerformanceCounter(&nCounterStart1);
                QueryPerformanceCounter(&nCounterEnd1);

                if (double((nCounterEnd1.QuadPart - nCounterStart1.QuadPart))/double(nFrequency.QuadPart)> 0.000002)//执行两句话,用不了这么久,之间有线程切换
                {
                        nCounterStart.QuadPart = nCounterEnd1.QuadPart;//时间片开始

                        while (bLoop)
                        {
                                QueryPerformanceCounter(&nCounterStart1);
                                QueryPerformanceCounter(&nCounterEnd1);

                                if (double((nCounterEnd1.QuadPart - nCounterStart1.QuadPart))/double(nFrequency.QuadPart)> 0.000002)
                                {
                                        nCounterEnd.QuadPart = nCounterStart1.QuadPart;
                                        //时间片结束
                                        bLoop = FALSE;
                                }
                        }
                }
        }

//                QueryPerformanceCounter(&nCounterStart);
//                QueryPerformanceCounter(&nCounterEnd);

        double dMinus = (double)(nCounterEnd.QuadPart - nCounterStart.QuadPart);
        double dFrequency = (double)nFrequency.QuadPart;

        double dTimes = dMinus/dFrequency;
        int x = dTimes*1000000000;//转成纳秒
        printf("%dns",x);

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//