在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中增加一个功能,可