驱动程序中的时间消耗计算
我们在驱动程序调试中,经常需要测试两个点的运行时间,来判断驱动中哪里占用了过多的时间,特别是在一些特殊的keyboard驱动中。
作者: http://blog.csdn.net/dyron欢迎大家在此讨论相关内容。
在计算消耗时间的时候,一般需要注意以下几点:
1. 计算时间时,最好不要在打印时间点,因为串口打印会占用大量时间。
2. 如果有循环,最好在循环外计算时间。
3. 注意条件分支的跳出,有时会导致时间计算失误。
先总结到这里,另有时间再完善。
static unsigned long bf_time, af_time, bf_all_time, af_all_time;
static inline unsigned long get_time (void)
{
struct timeval tv;
do_gettimeofday(&tv);
return (1000000 * tv.tv_sec + tv.tv_usec);
}
bf_all_time = get_time();
bf_time = get_time();
af_time = get_time();
af_all_time = get_time();
printk(KERN_ALERT "%s:========all_time = %dms, time = %dms\n",
__func__,
(af_all_time- bf_all_time) / 1000, (af_time - bf_time) / 1000);
作者: http://blog.csdn.net/dyron欢迎大家在此讨论相关内容。