clock_getres and clock_gettime
clock_getres and clock_gettime
我正试图用clock_MONOTONIC时钟,用clock_geters和clock_gettime来测量程序的一部分。
如果我理解正确,clock_gettime会通过测量某种外部时钟(而不是cpu)来获取经过的时间,并在他引用的struct-timespec实例中更新它,作为paramer。(即以纳秒分辨率返回结果)
我需要知道的不是实际时间,而是时钟(clock_MONOTONIC)的周期数。
我该怎么做?这可能与时钟有关,但我不明白它到底是如何工作的。
有人知道如何计算循环次数吗?
Clock_gettime为您获取epoch(或过去的其他固定时间,具体取决于您平台上的具体实现)与所选时钟上的当前时间(在您的情况下为Clock_MONOTONIC)之间的经过时间。
要测量一个过程需要多长时间,需要调用两次并计算差值。类似于:
int main()
{
timespec start, finish;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
//code you want to profile
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &finish);
//calculate the difference between start and finish
return 0;
}
注意,这会给你一个时间值,如果你想知道CPU周期,那么你必须使用类似rdtsc:的东西
#include <stdio.h>
#include <intrin.h>
#pragma intrinsic(__rdtsc)
int main()
{
unsigned __int64 i;
i = __rdtsc();
printf_s("%I64d ticksn", i);
}
相关文章:
- 使用 SendInput 或 mouse_event 不适用于 clock()?
- 为什么我们可以在 c++ 中使用 srand(clock())?
- 除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据
- IBM AIX std::clock()?
- Windows C 上的getTime ofday行为
- 为什么常量CLOCKS_PER_SEC不需要用 std:: 命名,但 <ctime> clock() 和 clock_t 可以呢?
- 当我使用 cin 时,我如何使用 clock() 测量时间
- 'clock()' 给出通常的时钟而不是 CPU 时钟
- 使用Clock()函数测量程序的运行时间
- 为什么我的sf :: clock在sfml中单独重置
- C++:Linux 中的计时(使用 clock())不同步(由于 OpenMP?)
- 如何在Linux上获得C 代码块的时钟刻度?clock()结果没有意义
- clock :: getElapSedTime()被调用时SFML 2.0崩溃
- 为什么在使用基于 clock() 的计时器宏时会得到负值
- clock() 函数始终返回 0
- 使用 clock() 函数调度任务时出现问题
- C++ VMWare Fusion/Boot Camp 下 VS2010 中 ctime 的 clock() 方法出现问题
- 为什么clock()被认为是坏的
- MFC/C++:需要遥远的"wall clock"时间而不重置系统的时间
- c++ 中的 clock() 时间和 java 中的 System.CurrentTimeMillis() 之间的时间差