解码库性能测试

测试目的:使用测试工具给出协议解码库的性能指标

测试工具:Intel公司的VTuneAMD公司的CodeAnalyst

采用方式:回放文件

一、VTune

 

VTune(TM) Performance Analyzer 是针对Intel芯片的一款性能分析软件,安装文件位于//ngwbuild01/Wupeng目录下

1.1 在虚拟机环境下运行很不正常,有时可以使用,有时会报出如下错误

Figure 1 Error Message

对于此类错误开始以为是操作方法的问题,与帮助文档验证操作过程后仍频繁出现,经网络搜索后证明是与虚拟机不兼容,参考网页:

http://blog.shuva.in/comments.php?y=07&m=09&entry=entry070923-222018

1.2 VTune基本操作。

VTune有三种分析方法:

Sampling :时间采样(主要方式)

Call graph :以图表方式表现

Counter monitor collectors:时钟监视结果

Step.1新建一个工程:File->new project,一般选Quick Performance Analysis Wizard就可以了。

Step.2选择要测试的程序,在弹出的对话框中有Application to Launch,填入Debug文件下的exe程序就行了。

Step.3 Run Activity:按工具栏上的绿色三角按钮就行了, 一般会自动运行程序,这时你执行你想要的操作。本来还有些配置可以配的,不过比较麻烦,没有深入研究。

完成一次测试后,会看到run1总表,如下图所示

Figure 2 Overview

包含第一层次的性能计数器:

1) INST_RETIRED.ANY - 表示指令的有效执行的计数

2) CPU_CLK_UNHALTED.CORE - 表示非停机状态花费的机器周期

CPI(每次执行消耗的时钟时间) = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY

    表示一段代码(函数,模块)平均每条指令花费的机器周期,愈小愈好。这样可以找到那些CPU_CLK_UNHALTED.CORE大的函数且CPI也大的函数去关注(通常称之为热点函数)

双击待测试的进程,进入Threads视图,如下所示

Figure 3 Threads视图

显示了当前进程的所有线程,需要逐个线程查看所要观察的dll在哪个线程中,下图显示该线程用到的所有module

Figure 4 Modules视图

双击module显示此module的信息,如下图所示

Figure 5 Hotpots视图

如果此moduledebug版,可以继续观察代码的执行情况,且与pdb文件同级,在查看ProcessDetail过程中会要求指定源码的位置,从而给出各段代码执行时间。如下图所示:

Figure 6 Code

     

1.3 附加功能

VTune还有另外两个功能是关于多线程的优化,在这里没有使用。

二、CodeAnalyst使用

CodeAnaylyst操作与VTune类似,但软件相对简单,而且目前运行环境的硬件架构是在Intel CPU上,只能使用此软件的Time Sampling功能。

SART配合使用时出现多次测试,发现在CodeAnalyst中看到加载的动态库每次不同,如以下三张截图所示:

Figure 7 CodeAnalyst test1

Figure 8 CodeAnalyst test2

Figure 9 CodeAnalyst test4

 

CodeAnalyst可以完成对代码执行效率的分析,比如可以分析到某段程序的瓶颈出现在那行代码,可以用于指导编程人员去修改,但此工具不能用来定位某动态库效率指标。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1)解码支持的协议特性:h.264 main profile完整规格,严格参照2005年3月正式发布的协议文档(T-REC-H.264-200503-P!!MSW-E.doc)实现。Main profile的特性参见协议附录A对profile以及level的描述。 2)解码采用的测试工具集:ALLEGRO,HHI,JVT提供的baseline(FMO/ASO特性除外), main profile专业测试码流,以及超过20家IPTV厂家的商用码流。其中专业测试码流是业界用来确保解码芯片规格完备的利器。 3)解码容错处理:重用相同协议规格解码芯片IP验证使用的工具集,含盖了几乎所有的业务功能,边界条件,系统异常等问题的测试用例。 4)是针对X86平台开发的在windows系统下的版本:采用intel的编译器,slice以上层解码主要采用C语言实现,宏块层解码大量使用了MMX,SSE2技术进行高性能并行解码设计。由于main profile的复杂度比较高,不推荐在不支持MMX,SSE2技术的计算机上使用本解码产品。 5)产品标杆:在性能指标上一直参照业界性能最佳coreAVC解码进行对比开发,目前纯解码性能稳定在其120%以上,而且对协议规格的遵守方面则具有明显优势。本解码吸收了JM 10.2在调测ALLEGRO等专业测试码流时发现的若干问题,而coreAVC提供的demo程序只能通过一些最基本的测试码流。业界比较知名的公司还有ateme, elecard和cyberlink。 6)接口形式:提供5个独立的API函数(open, close, decode, get, set)。其中decode函数只负责解析接收到的用户指定长度的符合协议附录B描述的视频流;在解码内部维护解码图像缓冲区,通过get和set函数来实现播放显示与解码对重构图像的地址交互,避免YUV数据的多次拷贝。 技术支持联系:[email protected]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值