c语言 一条for循环所用时间
答案:2 悬赏:0 手机版
解决时间 2021-08-15 16:35
- 提问者网友:贪了杯
- 2021-08-15 07:55
c语言 一条for循环所用时间
最佳答案
- 五星知识达人网友:孤老序
- 2021-08-15 08:52
3)使用Windows API(精确到微秒级):
如果想提高精度,可以使用QueryPerformanceCounter和QueryPerformanceFrequency。这两个函数不是在每个 系统中都支持。对于支持它们的系统中,可以获得低于1ms的精度。Windows 内部有一个精度非常高的定时器, 精度在微秒级, 但不同的系统这个定时器的频率不同, 这个频率与硬件和操作系统都可能有关。利用 API 函数 QueryPerformanceFrequency 可以得到这个定时器的频率。利用 API 函数 QueryPerformanceCounter 可以得到定时器的当前值。根据要延时的时间和定时器的频率, 可以算出要延时的时间定时器经过的周期数。在循环里用 QueryPerformanceCounter 不停的读出定时器值, 一直到经过了指定周期数再结束循环, 就达到了高精度延时的目的。
LARGE_INTEGER m_nFreq;
LARGE_INTEGER m_nTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nTime);//获取当前时间
printf(" time:%lld us",(m_lm.QuadPart*1000000/m_nFreq.QuadPart));//m_nFreq.QuadPart为:次数/s,这样就可以获得毫秒级别的了。
LARGE_INTEGER的定义为:
#if defined(MIDL_PASS)
typedef struct _LARGE_INTEGER {
#else // MIDL_PASS
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
#endif //MIDL_PASS
LONGLONG QuadPart;
} LARGE_INTEGER;
如果想提高精度,可以使用QueryPerformanceCounter和QueryPerformanceFrequency。这两个函数不是在每个 系统中都支持。对于支持它们的系统中,可以获得低于1ms的精度。Windows 内部有一个精度非常高的定时器, 精度在微秒级, 但不同的系统这个定时器的频率不同, 这个频率与硬件和操作系统都可能有关。利用 API 函数 QueryPerformanceFrequency 可以得到这个定时器的频率。利用 API 函数 QueryPerformanceCounter 可以得到定时器的当前值。根据要延时的时间和定时器的频率, 可以算出要延时的时间定时器经过的周期数。在循环里用 QueryPerformanceCounter 不停的读出定时器值, 一直到经过了指定周期数再结束循环, 就达到了高精度延时的目的。
LARGE_INTEGER m_nFreq;
LARGE_INTEGER m_nTime;
QueryPerformanceFrequency(&m_nFreq); // 获取时钟周期
QueryPerformanceCounter(&m_nTime);//获取当前时间
printf(" time:%lld us",(m_lm.QuadPart*1000000/m_nFreq.QuadPart));//m_nFreq.QuadPart为:次数/s,这样就可以获得毫秒级别的了。
LARGE_INTEGER的定义为:
#if defined(MIDL_PASS)
typedef struct _LARGE_INTEGER {
#else // MIDL_PASS
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
#endif //MIDL_PASS
LONGLONG QuadPart;
} LARGE_INTEGER;
全部回答
- 1楼网友:鱼忧
- 2021-08-15 09:49
c语言中。。每条指令都有自己的指令周期。这在汇编中经常提到。如果你知道了你所使用的系统的机器周期。
机器周期和指令周期之间有关系的。各系统不一样。如果你知道了系统的机器周期,也就是工作频率。在知道某条指令的指令周期。那么时间就很容易算出来了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯