当前位置: 首页 > 编程笔记 >

Linux下通过gettimeofday函数获取程序段执行时间【推荐】

陈项禹
2023-03-14
本文向大家介绍Linux下通过gettimeofday函数获取程序段执行时间【推荐】,包括了Linux下通过gettimeofday函数获取程序段执行时间【推荐】的使用技巧和注意事项,需要的朋友参考一下

在Linux下计算某个程序段执行的时间一般使用gettimeofday函数,此函数的声明在sys/time.h文件中。此函数接收两个结构体参数,分别为timeval、timezone.

        两个结构体的声明如下:

struct timeval { 
  time_t tv_sec; /* seconds */ 
  long tv_usec;  /* microseconds */ 
}; 
struct timezone { 
  int tz_minuteswest; 
  int tz_dsttime; 
}; 

        一般通过gettimeofday函数获得当前时间时,第二个参数为nullptr。结构体timeval中的tv_sec表示秒,tv_usec表示微秒。

        matlab中通过tic(start a stopwatch timer)和toc(read the stopwatch timer)两个函数来给出程序段所运行的时间,这里通过两个宏TIC和TOC来实现。测试代码如下:

#include <sys/time.h> 
#include <unistd.h> 
#include <iostream> 
#define TIC                               \ 
  struct timeval time1, time2;                    \ 
  gettimeofday(&time1, nullptr); 
#define TOC                               \ 
  gettimeofday(&time2, nullptr);                   \ 
  double elapsed_time = (time2.tv_sec - time1.tv_sec) * 1000. +    \ 
        (time2.tv_usec - time1.tv_usec) / 1000.;        \ 
  fprintf(stdout, "Elapsed time: %lf(ms)\n", elapsed_time); 
int main() 
{ 
  unsigned int tm{10}; 
  TIC 
  for (int i = 0; i < 1000; ++i) { 
    usleep(tm); 
  } 
  TOC 
  return 0; 
} 

        执行结果如下:

        执行过程:将终端定位到Linux_Code_Test/Samples_cplusplus目录下,执行:./build.sh,然后进入到build目录下,执行生成的执行文件即可。

        GitHub: https://github.com/fengbingchun/Linux_Code_Test

总结

以上所述是小编给大家介绍的Linux下通过gettimeofday函数获取程序段执行时间,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 问题内容: 我想在几种不同条件下在linux shell中执行某些操作,并能够输出每次执行的执行时间。 我知道我可以编写一个可以执行此操作的perl或python脚本,但是有什么方法可以在shell中执行它吗?(碰巧是bash) 问题答案: 使用内置关键字: 例:

  • 我试图通过Google应用程序脚本获取XML,然后将这些值传递给Google工作表。在几次迭代中,一切正常。如果我尝试更多,我将超过执行的最长时间。 下面的代码会导致错误消息“超过最大执行时间”。如果我降低迭代次数(3),它将起作用。但是我需要迭代大约20K行。 饲料结构 有什么建议吗,有什么问题吗? 非常感谢你

  • 问题内容: 为了使gettimeofday能够正常工作,当前时间必须全局存储,但是我不确定该函数是否修改了任何全局状态,从而并发执行未定义。 问题答案: gettimeofday是线程安全的。 这里列出的(posix)函数可能不是,gettimeofday不是其中之一。

  • 本文向大家介绍请描述下函数的执行过程相关面试题,主要包含被问及请描述下函数的执行过程时的应答技巧和注意事项,需要的朋友参考一下 首先会产生一个函数执行环境,然后js引擎会把这个执行环境放到函数调用栈中。 函数开始执行,根据代码顺序执行,遇到变量赋值时, 给对应的变量赋值。 函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用域。

  • 本文向大家介绍linux下通过命令行获取gmail的新邮件,包括了linux下通过命令行获取gmail的新邮件的使用技巧和注意事项,需要的朋友参考一下 linux下通过命令行获取gmail的新邮件,不需输入@gmail.com部分 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 作者:陈希章 发表于 2018年1月5日 这是一个很小的技巧,而且用几句话就能讲明白。事情是这样的,我最近在回顾之前写过的文章:通过其他第三方工具体验Microsoft Graph 的时候,发现最近的PostMan这个工具无法正常地获取到accesstoken,具体原因不明,一阵找原因后,碰巧后来遇到了总部做Graph的产品组的同事,了解到他们正考虑在Graph Explorer中增加一个功能,可