背景:实现高性能memcpy函数。所以得先想清楚怎么测试性能!在网上也发现了一些测试用例,但是觉得不是很合理,在这里整理下思路,仅作笔记!
朴素思维
- 在执行memcpy前,获取系统当前时间start_time;
- 在执行memcpy后,获取系统当前时间end_time;
- end_time - start_time,即可得耗费时间
获取系统当前时间
有以下几种获取时间的方式
// 以下三个函数,均声明在 <time.h>
time_t time(time_t * timer) ; //s 秒级精度
int gettimeofday(struct timeval *tv, struct timezone *tz); //us 微妙级精度
int clock_gettime(clockid_t clk_id, struct timespect *tp); //ns 纳秒级精度
经过测试,执行一个printf 函数,需要400us左右,即0.4ms 毫秒。
个人觉得有些不可思议,一个小printf竟然需要耗费这么久时间!!
可能是函数消耗比较大,以后有空用汇编测试下
为方便以后扩展(可以轻易转化为us/ms/s),所以选取ns级精度时间函数 clock_gettime.
下为实例代码 参考链接
#inclu