架构篇-准备工作

本文强调了优化工作前准备工具的重要性,包括测试集、日志、性能评估工具、代码阅读工具及版本管理工具,并详细介绍了每种工具的作用及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

要点:

       工欲善其事,必先利其器。在优化前必须做好一些准备工作,尤其是工具的准备。包括测试集(test suite),日志(log),性能评估工具(profiler),源码阅读工具,版本控制工具等。

讨论:

       在开始优化前,必须准备好工具。这不仅能提高工作效率,而且是保证优化朝着正确方向前进的必要条件。

1,  测试集(test suite

测试集包括测试例子(test case)和测试脚本(test script)。

Test case分为两大部分,一部分是保证优化结果正确的,如视频解码器的bit-exact test case,顾名思义,bit-exact就是要确保每次优化的结果必须和基准(benchmark)完全一致;另一部分是测试优化性能变化的,如视频解码器的performance test case。无论是bit-exact test case还是performance test case都要有足够的覆盖面,以视频解码器为例,相关的视频标准组织除了提供参考代码,还有许多有代表性的测试片段(test clip,这些test clip的包含了编码器的各种参数选项,就具有很好的覆盖面。在工程实践中,解码器程序员需要了解编码器的使用,会调整各类编码参数,以便根据需要制作相应的test clip

测试脚本对于提高测试效率是非常有用的。在PC上写脚本(如批处理文件)大家都比较熟悉了。在嵌入式系统中可以自己开发一个脚本解析器。脚本驱动的测试大大提高了工作效率。所以一定要重视测试脚本的使用。

2,  日志(Log

整个系统使用统一的日志是非常必要的。在架构级可以通过日志快速锁定问题所在模块。在模块级可以通过日志进一步确定问题根源。尤其对模块级的优化,频繁的优化常常会导致non-bit-exact问题,这时候就需要用现有版本的日志与基准版本的日志进行对比,查出根源。

3,  性能评估工具(Profiler

性能评估工具如大家熟悉的IntelVtune,可以帮助程序员找出程序的热点分布,以及导致热点的各种因素,如过度的I/O读写,Cache miss,分支预测失败等。当然评估工具可以作为一个重要参考,但也不能迷信它的威力,有时候它也会给出错误的提示。

4,  代码阅读工具

很多程序员都不满意嵌入式系统的开发环境。他们选择第三方的代码阅读工具如source insight等来阅读编辑代码,这些代码阅读工具对于加快程序员理清程序结构,理解代码细节很有帮助。

5,  版本管理工具

无论对哪种类型的开发,版本管理工具都是必备的。对与优化来说,频繁的提交新的版本是个重要的技术策略。当某个版本出现non-bit-exact 问题,可以找到最近的一个bit-exact的版本,比较一下这两个版本的差异就可以确定问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值