介绍使用c/c++编写代码时如何精确的计算时间间隔,并以此计算代码的执行速度。
为了精确获取时间,我们要用到timespec结构体。 tv_sec: time_t类型(其实就是int64),是自1970年1月1号00:00:00到现在的秒数,是一个永远递增的数字。 tv_nsec: long型表示纳秒,数值在0-999999999之间。
获取时间用到的函数是 timespec_get(timespec结构体地址, Base) Base是一个无关紧要的数值,取1就可。
编写如图代码,在一个200000次for循环的前后调用timespec_get,获取的两个时间如图。
接着,我们按照如图方式计算时间间隔(单位:秒),速度(单位:百万次/秒),并显示,效果如图。
我们可以把这段计时代码定义成一个宏。 __x为待计时代码,__mysize为计算速度用到的总长度,__printexp为代码执行后附加运行的代码(比如printf输出点什么)
如图,直接使用写好的宏来对代码计时。