Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2084691
  • 博文数量: 288
  • 博客积分: 10594
  • 博客等级: 上将
  • 技术积分: 3469
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-27 19:27
文章分类

全部博文(288)

文章存档

2012年(4)

2011年(30)

2010年(40)

2009年(32)

2008年(71)

2007年(79)

2006年(32)

分类: LINUX

2011-12-09 13:11:06

                                     驱动程序中的时间消耗计算

 

我们在驱动程序调试中,经常需要测试两个点的运行时间,来判断驱动中哪里占用了过多的时间,特别是在一些特殊的keyboard驱动中。

 

作者:  欢迎大家在此讨论相关内容。

         在计算消耗时间的时候,一般需要注意以下几点:

1.       计算时间时,最好不要在打印时间点,因为串口打印会占用大量时间。

2.       如果有循环,最好在循环外计算时间。

3.       注意条件分支的跳出,有时会导致时间计算失误。

 

先总结到这里,另有时间再完善。

  1. static unsigned long bf_time, af_time, bf_all_time, af_all_time;

  2. static inline unsigned long get_time (void)
  3. {
  4.     struct timeval tv;

  5.     do_gettimeofday(&tv);
  6.     return (1000000 * tv.tv_sec + tv.tv_usec);
  7. }

  8. bf_all_time = get_time();

  9. bf_time = get_time();

  10. af_time = get_time();

  11. af_all_time = get_time();

  12. printk(KERN_ALERT "%s: ========all_time = %dms, time = %dms\n",

  13.                    __func__,

  14.                    (af_all_time - bf_all_time) / 1000, (af_time - bf_time) / 1000);

作者:  欢迎大家在此讨论相关内容。

阅读(2454) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~