0
#include "TIMER1.h"
#include "MAIN.h"  
typedef unsigned _int64 uint64;

void TASK1()
{
uint64 freq, start, end, diff;
//unsigned int milliseconds;

QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
QueryPerformanceCounter((LARGE_INTEGER*)&start);

// code to measure
printf("hi\n");
printf("hi1\n");
printf("hi2\n");

QueryPerformanceCounter((LARGE_INTEGER*)&end);
diff = (((end - start) * 1000) / freq);
//milliseconds = (unsigned int)(diff & 0xffffffff);
printf("It took %u ms\n",diff);

}

我从 main 中多次调用 void TASK1() 函数并分析打印所需的时间,如上面的代码(即 hi、hi1、hi2)。我正在计算打印 hi、hi1、hi2 的开始时间和结束时间之间的时间差。我的问题:为什么我的输出延迟并且无法完全按预期打印。

输出错误:hi hi1 hi2 它花了 0ms

hi hi1 hi2 花了 1ms

有时在输出中: hi1 hi2 it takes 2ms

这是什么原因?如何将上述代码从毫秒更改为微秒?

4

1 回答 1

0
  1. 各种延误。...这是什么原因?

    printf()与其他进程同步,因此所需时间可能会有所不同。

  2. ...如何将上述代码从毫秒更改为微秒?

    diff = (((end - start) * 1000000) / freq);
    printf("It took %u us\n",diff);
    
于 2013-11-13T08:39:20.513 回答