CN104866416A - 实现应用程序性能分析的方法和装置 - Google Patents
实现应用程序性能分析的方法和装置 Download PDFInfo
- Publication number
- CN104866416A CN104866416A CN201410064760.9A CN201410064760A CN104866416A CN 104866416 A CN104866416 A CN 104866416A CN 201410064760 A CN201410064760 A CN 201410064760A CN 104866416 A CN104866416 A CN 104866416A
- Authority
- CN
- China
- Prior art keywords
- function
- performance data
- application program
- performance
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种实现应用程序性能分析的方法和装置。所述方法包括:触发运行应用程序,待运行至应用程序C层中待分析性能的函数时通过chromium-trace模块触发对函数进行性能数据采集;待所述待分析性能的函数停止执行时结束性能数据采集;处理性能数据采集所得到的调试文件以得到待分析性能的函数所对应的执行耗时。所述装置包括:运行模块,用于触发运行应用程序,待运行至应用程序C层中待分析性能的函数时通过chromium-trace模块触发对函数进行性能数据采集;采集结束模块,用于待所述待分析性能的函数停止执行时结束性能数据采集;处理模块,用于处理性能数据采集所得到的调试文件以得到待分析性能的函数对应的执行耗时。采用本发明能对应用程序C层进行性能分析。
Description
技术领域
本发明涉及自动化调试技术,特别是涉及一种实现应用程序性能分析的方法和装置。
背景技术
对应用程序进行调试以获取该应用程序当前所存在的瓶颈,进而为程序的优化提供非常大的帮助。对运行于Android操作系统的应用程序调试而言,通常采用Android操作系统自带的调试工具,即Traceview和Systrace,其中,Traceview将用来分析应用程序中java层的执行,Systrace则侧重于图形等方面的性能分析,也就是传统的调试工具无法实现应用程序C层的性能分析。
发明内容
基于此,有必要针对传统的调试工具无法实现应用程序C层的性能分析的技术问题,提供一种能对应用程序C层进行性能分析的实现应用程序性能分析的方法。
此外,还有必要提供一种能对应用程序C层进行性能分析的实现应用程序性能分析的装置。
一种实现应用程序性能分析的方法,包括如下步骤:
触发运行应用程序,待运行至所述应用程序C层中待分析性能的函数时通过chromium-trace模块触发对所述函数进行性能数据采集;
待所述待分析性能的函数停止执行时结束所述性能数据采集;
处理所述性能数据采集所得到的调试文件以得到所述待分析性能的函数所对应的执行耗时。
一种实现应用程序性能分析的装置,包括:
运行模块,用于触发运行应用程序,待运行至所述应用程序C层中待分析性能的函数时通过chromium-trace模块触发对所述函数进行性能数据采集;
采集结束模块,用于待所述待分析性能的函数停止执行时结束所述性能数据采集;
处理模块,用于处理所述性能数据采集所得到的调试文件以得到所述待分析性能的函数所对应的执行耗时。
上述实现应用程序性能分析的方法和装置,在需要对一应用程序进行调试时,将触发运行该应用程序,待运行至该应用程序C层中待分析性能的函数时通过chromium-trace模块触发对这一函数进行性能数据采集,待这一函数停止执行时结束所进行的性能数据采集,处理性能数据采集所得到的调试文件即可得到这一函数所对应的执行耗时,进而完成应用程序C层中的性能分析。
附图说明
图1为一个实施例中实现应用程序性能分析的方法流程图;
图2为图1中触发运行应用程序,待运行至应用程序C层中待分析性能的函数时通过chromium-trace模块触发对该函数进行性能数据采集的方法流程图;
图3为图1中处理性能数据采集处到的调试文件以得到待分析性能的函数所对应的执行耗时的方法流程图;
图4为一个实施例中实现应用程序性能分析的装置的结构示意图;
图5为图4中运行模块的结构示意图;
图6为图4中处理模块的结构示意图;
图7为另一个实施例中实现应用程序性能分析的装置的结构示意图;
图8为一个适用于本发明的计算机系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
如图1所示,在一个实施例中,一种实现应用程序性能分析的方法,包括如下步骤:
步骤S110,触发运行应用程序,待运行至应用程序C层中待分析性能的函数时通过chromium-trace模块触发对该函数进行性能数据采集。
本实施例中,应用程序C层即为应用程序中通过C语言预研编写的,即应用程序中的native代码。运行于Android操作系统的应用程序大都使用Java语言编写,其底层即为应用程序的C层,通过C语言编写得到。
chromium-trace模块则是chromium开源项目听trace模块,为实现Andriod操作系统中应用程序在C层的性能分析,预先将chromium-trace模块从chromium开源项目中剥离,以将其打包成动态链接库。
利用chromium-trace模块中提供的接口对应用程序C层中执行的函数进行性能数据的采集,以通过性能数据实现该函数的性能分析。
步骤S130,待分析性能的函数停止执行时结束性能数据采集。
本实施例中,应用程序C层中,在通过chromium-trace模块对当前执行的函数进行性能数据采集的过程中将在该函数停止执行时结束性能数据的采集,以完成对该函数的性能数据采集,待运行到应用程序C层中下一待分析性能的函数时将再次进行性能数据的采集。
步骤S150,处理性能数据采集处到的调试文件以得到待分析性能的函数所对应的执行耗时。
本实施例中,处理得到应用程序C层中各种函数的执行耗时,以通过定位执行耗时最大的函数来获知应用程序当前的性能瓶颈,进而得以方便快速地实现应用程序的优化,大大节点了调试人员所需要耗费的人力资源。
性能数据采集所得到的各种性能数据将被存入调试文件中,以便于调试人员得以随时调取调试文件查看应用程序当前所存在的瓶颈。
如图2所示,在一个实施例中,上述步骤S110的具体过程为:
步骤S111,通过对应用程序的调试操作运行应用程序。
本实施例中,调试人员将在Android操作系统所提供的操作界面中选定需要进行性能数据采集的应用程序,并对该应用程序触发调试操作,此时,将通过这一触发的调试操作运行对应的应用程序。
步骤S113,随着应用程序的运行,对应用程序C层当前运行的待分析性能的函数通过chromium-trace模块控制预先插入的性能数据采集模块触发计时,并输出该函数开始计时对应的性能数据。
本实施例中,随着触发的调试操作所对应的应用程序的运行,将运行应用程序中的若干个函数,其中,所运行的函数可以是Java层的,也可以是C层的,一旦运行至应用程序C层的待分析性能的函数时,将在chromium-trace模块的控制之下由预先插入的性能数据采集模块触发进行计时,以得到当前开始执行这一待分析性能的函数的时间点,进而生成对应的性能数据。
性能数据采集模块是预先插入函数内部的,用于对该函数的执行进行计时。具体的,性能数据采集模块将被封装成宏的形式,会自动展开成类的构造函数和析构函数,待该函数被执行时,将执行构造函数,以进行初始化,该构造函数中封装了开始计时的接口,因此,通过构造函数的执行将得到当前开始执行该函数的时间点,以输出相应的性能数据。
进一步的,所输出的性能数据将为jason(JavaScript Object Notation)格式,以通过这一轻量的数据表示方式对函数的执行进行记录,进而非常直观地表现函数的执行,非常简洁。
在一个实施例中,上述步骤S130的具体过程为:应用程序C层中当前触发计时的函数停止执行时,将结束性能数据采集模块触发的计时,并输出函数结束计时所对应的性能数据。
本实施例中,应用程序C层中当前已经触发计时的函数停止执行时,将在数据采集模块的控制下执行析构函数,该析构函数中封装了结束计时的接口,以通过析构函数的执行得到该函数的退出执行时间。
如图3所示,在一个实施例中,上述步骤S150的具体过程为:
步骤S151,在调试文件中,从函数开始计时对应的性能数据中提取得到函数的开始执行时间,从函数结束计时所对应的性能数据中提取得到函数的停止执行时间。
本实施例中,对一应用程序C层中进行性能数据采集的函数而言,在调试文件中将对应记录了两条性能数据,即分别为该函数开始计时对应的性能数据和该函数结束计时所对应的性能数据,因此,在调试文件中对该函数所对应的性能数据进行提取即可得到执行该函数的开始执行时间和停止执行时间。
例如,在调试文件中,某一函数所对应的两条性能数据分别以如下格式存在,即该函数开始计时对应的性能数据为[{"cat":"Java","pid":3775,"tid":3824,"ts":419321137,"ph":"B","name":"WebViewCore.handleMessage","args":{"arg":"197"}},该函数结束计时所对应的性能数据{"cat":"Java","pid":3775,"tid":3824,"ts":419321202,"ph":"E","name":"WebViewCore.handleMessage","args":{}}]。
其中,“cat”代表类别,类别可以自定义;“pid”代表进程ID;“tid”是线程ID;“ts”是时间值,是该条性能数据记录生成的时间,对应了该函数的开始执行时间;“ph”代表一个性能采集的开始还是结束,“B”代表开始,“E”代表结束;“name”代表性能采集点的名称,不同的采集点应当指定不同的名称;“args”是调用者指定的一些附加信息。
步骤S153,根据开始执行时间和停止执行时间得到待分析性能的函数所对应的执行耗时。
本实施例中,开始执行时间和停止执行时间之间的差值即为待分析性能的函数所对应的执行耗时。在如上所列举的两条性能数据中,执行耗时为:419321202-419321137=65(ms)。
在另一个实施例中,上述方法还包括了如下步骤:
将性能数据采集所得到的性能数据保存于读写缓冲区,判断读写缓冲区中的性能数据是否过大或者应用程序是否终止性能数据的采集,若为是,则
将性能数据转存至应用程序的调试文件中,若为否,则
返回步骤S110继续进行性能数据的采集。
本实施例中,进行性能数据采集而输出的性能数据被保存于读写缓冲区中,因此,需要在读写缓冲区满之前或者应用程序终止了性能数据的采集时将读写缓冲区中的性能数据转存到这一应用程序所对应的调试文件中。
也就是说,应用程序完成性能数据的采集之后,将在chromium-trace模块的控制下调用终止化接口,以在预先设置的目录中生成调试文件,该调试文件中存储了若干条性能数据。
此时,通过chrome浏览器即可开启该调试文件,并通过相应的图形界面展示调试文件中记录的性能数据。具体的,调试人员将在开启的chrome浏览器中输入“chrome://tracing”,并点击页面中的加载按钮即可打开相应的调试文件,并显示于图形界面中,以在图形界面中显示各个采集点的名称、执行耗时以及各采集点相互间的调用关系。
通过如上所述的过程,图形化地展示了应用程序C层中各个函数的耗时,以方便迅速找到性能瓶颈,并且也极大地扩大了chromium开源项目的应用范围。
如图4所示,在一个实施例中,一种实现应用程序性能分析的装置,包括运行模块110、采集结束模块130和处理模块150。
运行模块110,用于触发运行应用程序,待运行至应用程序C层中待分析性能的函数时通过chromium-trace模块触发对该函数进行性能数据采集。
本实施例中,应用程序C层即为应用程序中通过C语言预研编写的,即应用程序中的native代码。运行于Android操作系统的应用程序大都使用Java语言编写,其底层即为应用程序的C层,通过C语言编写得到。
chromium-trace模块则是chromium开源项目听trace模块,为实现Andriod操作系统中应用程序在C层的性能分析,预先将chromium-trace模块从chromium开源项目中剥离,以将其打包成动态链接库。
运行模块110利用chromium-trace模块中提供的接口对应用程序C层中执行的函数进行性能数据的采集,以通过性能数据实现该函数的性能分析。
采集结束模块130,用于待这一待分析性能的函数停止执行时结束性能数据采集。
本实施例中,应用程序C层中,在通过chromium-trace模块对当前执行的函数进行性能数据采集的过程中采集结束模块130将在该函数停止执行时结束性能数据的采集,以完成对该函数的性能数据采集,待运行到应用程序C层中下一待分析性能的函数时将再次进行性能数据的采集。
处理模块150,用于处理性能数据采集所得到的调试文件以得到待分析性能的函数所对应的执行耗时。
本实施例中,处理模块150处理得到应用程序C层中各种函数的执行耗时,以通过定位执行耗时最大的函数来获知应用程序当前的性能瓶颈,进而得以方便快速地实现应用程序的优化,大大节点了调试人员所需要耗费的人力资源。
性能数据采集所得到的各种性能数据将被存入调试文件中,以便于调试人员得以随时调取调试文件查看应用程序当前所存在的瓶颈。
如图5所示,在一个实施例中,上述运行模块110包括操作触发单元111和计时触发单元113。
操作触发单元111,用于通过对应用程序的调试操作运行应用程序。
本实施例中,调试人员将在Android操作系统所提供的操作界面中选定需要进行性能数据采集的应用程序,并对该应用程序触发调试操作,此时,操作触发单元111将通过这一触发的调试操作运行对应的应用程序。
计时触发单元113,用于随着应用程序的运行,对应用程序C层当前运行的待分析性能的函数通过chromium-trace模块控制预先插入的性能数据采集模块触发计时,并输出该函数开始计时对应的性能数据。
本实施例中,随着触发的调试操作所对应的应用程序的运行,将运行应用程序中的若干个函数,其中,所运行的函数可以是Java层的,也可以是C层的,一旦运行至应用程序C层的待分析性能的函数时,计时触发单元113将在chromium-trace模块的控制之下由预先插入的性能数据采集模块触发进行计时,以得到当前开始执行这一待分析性能的函数的时间点,进而生成对应的性能数据。
性能数据采集模块是预先插入函数内部的,用于对该函数的执行进行计时。具体的,性能数据采集模块将被封装成宏的形式,会自动展开成类的构造函数和析构函数,待该函数被执行时,将执行构造函数,以进行初始化,该构造函数中封装了开始计时的接口,因此,通过构造函数的执行将得到当前开始执行该函数的时间点,以输出相应的性能数据。
进一步的,所输出的性能数据将为jason(JavaScript Object Notation)格式,以通过这一轻量的数据表示方式对函数的执行进行记录,进而非常直观地表现函数的执行,非常简洁。
在一个实施例中,上述采集结束模块130还用于应用程序C层中当前触发计时的函数停止执行时,将结束性能数据采集模块触发的计时,并输出函数结束计时所对应的性能数据。
本实施例中,应用程序C层中当前已经触发计时的函数停止执行时,采集结束模块130将在数据采集模块的控制下执行析构函数,该析构函数中封装了结束计时的接口,以通过析构函数的执行得到该函数的退出执行时间。
如图6所示,在一个实施例中,上述处理模块150包括提取单元151和运算单元153。
提取单元151,用于在调试文件中从函数开始计时对应的性能数据中提取得到该函数的开始执行时间,从该函数结束计时所对应的性能数据中提取得到该函数的停止执行时间。
本实施例中,对一应用程序C层中进行性能数据采集的函数而言,在调试文件中将对应记录了两条性能数据,即分别为该函数开始计时对应的性能数据和该函数结束计时所对应的性能数据,因此,提取单元151在调试文件中对该函数所对应的性能数据进行提取即可得到执行该函数的开始执行时间和停止执行时间。
例如,在调试文件中,某一函数所对应的两条性能数据分别以如下格式存在,即该函数开始计时对应的性能数据为[{"cat":"Java","pid":3775,"tid":3824,"ts":419321137,"ph":"B","name":"WebViewCore.handleMessage","args":{"arg":"197"}},该函数结束计时所对应的性能数据{"cat":"Java","pid":3775,"tid":3824,"ts":419321202,"ph":"E","name":"WebViewCore.handleMessage","args":{}}]。
其中,“cat”代表类别,类别可以自定义;“pid”代表进程ID;“tid”是线程ID;“ts”是时间值,是该条性能数据记录生成的时间,对应了该函数的开始执行时间;“ph”代表一个性能采集的开始还是结束,“B”代表开始,“E”代表结束;“name”代表性能采集点的名称,不同的采集点应当指定不同的名称;“args”是调用者指定的一些附加信息。
运算单元153,用于根据开始执行时间和停止执行时间得到待分析性能的函数所对应的执行耗时。
本实施例中,开始执行时间和停止执行时间之间的差值即为待分析性能的函数所对应的执行耗时。在如上所列举的两条性能数据中,执行耗时为:419321202-419321137=65(ms)。
如图7所示,在另一个实施例中,如上所述的装置还包括了判断模块210和转存模块230。
判断模块210,用于将性能数据采集所得到的性能数据保存于读写缓存区,判断读写缓存区中的性能数据是否过大或者应用程序是否终止性能数据的采集,若为是,则通知转存模块230,若为否,则通知运行模块110继续进行性能数据的采集。
转存模块230,用于将性能数据转存至应用程序的调试文件中。
本实施例中,进行性能数据采集而输出的性能数据被保存于读写缓冲区中,因此,需要转存模块230在读写缓冲区满之前或者应用程序终止了性能数据的采集时将读写缓冲区中的性能数据转存到这一应用程序所对应的调试文件中。
也就是说,应用程序完成性能数据的采集之后,将在chromium-trace模块的控制下调用终止化接口,以在预先设置的目录中生成调试文件,该调试文件中存储了若干条性能数据。
此时,通过chrome浏览器即可开启该调试文件,并通过相应的图形界面展示调试文件中记录的性能数据。具体的,调试人员将在开启的chrome浏览器中输入“chrome://tracing”,并点击页面中的加载按钮即可打开相应的调试文件,并显示于图形界面中,以在图形界面中显示各个采集点的名称、执行耗时以及各采集点相互间的调用关系。
通过如上所述的过程,图形化地展示了应用程序C层中各个函数的耗时,以方便迅速找到性能瓶颈,并且也极大地扩大了chromium开源项目的应用范围。
图8为能实现本发明实施例的一个计算机系统1000的模块图。该计算机系统1000只是一个适用于本发明的计算机环境的示例,不能认为是提出了对本发明的使用范围的任何限制。计算机系统1000也不能解释为需要依赖于或具有图示的示例性的计算机系统1000中的一个或多个部件的组合。
图8中示出的计算机系统1000是一个适合用于本发明的计算机系统的例子。具有不同子系统配置的其它架构也可以使用。例如有大众所熟知的台式机、笔记本、个人数字助理、智能电话、平板电脑、便携式媒体播放器、机顶盒等类似设备可以适用于本发明的一些实施例。但不限于以上所列举的设备。
如图8所示,计算机系统1000包括处理器1010、存储器1020和系统总线1022。包括存储器1020和处理器1010在内的各种系统组件连接到系统总线1022上。处理器1010是一个用来通过计算机系统中基本的算术和逻辑运算来执行计算机程序指令的硬件。存储器1020是一个用于临时或永久性存储计算程序或数据(例如,程序状态信息)的物理设备。系统总线1020可以为以下几种类型的总线结构中的任意一种,包括存储器总线或存储控制器、外设总线和局部总线。处理器1010和存储器1020可以通过系统总线1022进行数据通信。其中存储器1020包括只读存储器(ROM)或闪存(图中都未示出),以及随机存取存储器(RAM),RAM通常是指加载了操作系统和应用程序的主存储器。
计算机系统1000还包括显示接口1030(例如,图形处理单元)、显示设备1040(例如,液晶显示器)、音频接口1050(例如,声卡)以及音频设备1060(例如,扬声器)。显示设备1040和音频设备1060是用于体验多媒体内容的媒体设备。
计算机系统1000一般包括一个存储设备1070。存储设备1070可以从多种计算机可读介质中选择,计算机可读介质是指可以通过计算机系统1000访问的任何可利用的介质,包括移动的和固定的两种介质。例如,计算机可读介质包括但不限于,闪速存储器(微型SD卡),CD-ROM,数字通用光盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并可由计算机系统1000访问的任何其它介质。
计算机系统1000还包括输入装置1080和输入接口1090(例如,IO控制器)。用户可以通过输入装置1080,如键盘、鼠标、显示装置1040上的触摸面板设备,输入指令和信息到计算机系统1000中。输入装置1080通常是通过输入接口1090连接到系统总线1022上的,但也可以通过其它接口或总线结构相连接,如通用串行总线(USB)。
计算机系统1000可在网络环境中与一个或者多个网络设备进行逻辑连接。网络设备可以是个人电脑、服务器、路由器、智能电话、平板电脑或者其它公共网络节点。计算机系统1000通过局域网(LAN)接口1100或者移动通信单元1110与网络设备相连接。局域网(LAN)是指在有限区域内,例如家庭、学校、计算机实验室、或者使用网络媒体的办公楼,互联组成的计算机网络。WiFi和双绞线布线以太网是最常用的构建局域网的两种技术。WiFi是一种能使计算机系统1000间交换数据或通过无线电波连接到无线网络的技术。移动通信单元1110能在一个广阔的地理区域内移动的同时通过无线电通信线路接听和拨打电话。除了通话以外,移动通信单元1110也支持在提供移动数据服务的2G,3G或4G蜂窝通信系统中进行互联网访问。
应当指出的是,其它包括比计算机系统1000更多或更少的子系统的计算机系统也能适用于发明。例如,计算机系统1000可以包括能在短距离内交换数据的蓝牙单元,用于照相的图像传感器,以及用于测量加速度的加速计。
如上面详细描述的,适用于本发明的计算机系统1000能执行上述实现应用程序性能分析的方法的指定操作。计算机系统1000通过处理器1010运行在计算机可读介质中的软件指令的形式来执行这些操作。这些软件指令可以从存储设备1070或者通过局域网接口1100从另一设备读入到存储器1020中。存储在存储器1020中的软件指令使得处理器1010执行上述的实现应用程序性能分析的方法。此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本发明。因此,实现本发明并不限于任何特定硬件电路和软件的组合。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种实现应用程序性能分析的方法,包括如下步骤:
触发运行应用程序,待运行至所述应用程序C层中待分析性能的函数时通过chromium-trace模块触发对所述函数进行性能数据采集;
待所述待分析性能的函数停止执行时结束所述性能数据采集;
处理所述性能数据采集所得到的调试文件以得到所述待分析性能的函数所对应的执行耗时。
2.根据权利要求1所述的方法,其特征在于,所述触发运行应用程序,待运行至所述应用程序C层中待分析性能的函数时通过chromium-trace模块触发对所述函数进行性能数据采集的步骤包括:
通过对应用程序的调试操作运行应用程序;
随着所述应用程序的运行,对所述应用程序C层当前运行的待分析性能的函数通过chromium-trace模块控制预先插入的性能数据采集模块触发计时,并输出所述函数开始计时对应的性能数据。
3.根据权利要求2所述的方法,其特征在于,所述待分析性能的函数停止执行时结束所述必性能数据采集的步骤包括:
所述应用程序C层中当前触发计时的函数停止执行时,将结束所述性能数据采集模块触发的计时,并输出所述函数结束计时所对应的性能数据。
4.根据权利要求3所述的方法,其特征在于,所述处理所述性能数据采集所得到的调试文件以得到所述待分析性能的函数所对应的执行耗时的步骤包括:
在所述调试文件中,从所述函数开始计时对应的性能数据中提取得到所述函数的开始执行时间,从所述函数结束计时所对应的性能数据中提取得到所述函数的停止执行时间;
根据所述开始执行时间和停止执行时间得到所述待分析性能的函数所对应的执行耗时。
5.根据权利要求1所述的方法,其特征在于,所述处理所述性能数据采集所得到的性能数据以得到所述待分析性能的函数所对应的执行耗时的步骤之前,所述方法还包括:
将所述性能数据采集所得到的性能数据保存于读写缓冲区,判断所述读写缓冲区中的性能数据是否过大或者所述应用程序是否终止性能数据的采集,若为是,则
将所述性能数据转存至所述应用程序的调试文件中。
6.一种实现应用程序性能分析的装置,其特征在于,包括:
运行模块,用于触发运行应用程序,待运行至所述应用程序C层中待分析性能的函数时通过chromium-trace模块触发对所述函数进行性能数据采集;
采集结束模块,用于待所述待分析性能的函数停止执行时结束所述性能数据采集;
处理模块,用于处理所述性能数据采集所得到的调试文件以得到所述待分析性能的函数所对应的执行耗时。
7.根据权利要求6所述的装置,其特征在于,所述运行模块包括:
操作触发单元,用于通过对应用程序的调试操作运行应用程序;
计时触发单元,用于随着所述应用程序的运行,对所述应用程序C层当前运行的待分析性能的函数通过chromium-trace模块控制预先插入的性能数据采集模块触发计时,并输出所述函数开始计时对应的性能数据。
8.根据权利要求7所述的装置,其特征在于,所述采集结束模块还用于所述应用程序C层中当前触发计时的函数停止执行时,将结束所述性能数据采集模块触发的计时,并输出所述函数结束计时所对应的性能数据。
9.根据权利要求8所述的装置,其特征在于,所述处理模块包括:
提取单元,用于在所述调试文件中从所述函数开始计时对应的性能数据中提取得到所述函数的开始执行时间,从所述函数结束计时所对应的性能数据中提取得到所述函数的停止执行时间;
运算单元,用于根据所述开始执行时间和停止执行时间得到所述待分析性能的函数所对应的执行耗时。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
判断模块,用于将所述性能数据采集所得到的性能数据保存于读写缓冲区,判断所述读写缓冲区中的性能数据是否过大或者所述应用程序是否终止性能数据的采集,若为是,则通知转存模块;
所述转存模块用于将所述性能数据转存至所述应用程序的调试文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410064760.9A CN104866416B (zh) | 2014-02-25 | 2014-02-25 | 实现应用程序性能分析的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410064760.9A CN104866416B (zh) | 2014-02-25 | 2014-02-25 | 实现应用程序性能分析的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866416A true CN104866416A (zh) | 2015-08-26 |
CN104866416B CN104866416B (zh) | 2019-08-23 |
Family
ID=53912262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410064760.9A Active CN104866416B (zh) | 2014-02-25 | 2014-02-25 | 实现应用程序性能分析的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866416B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106354644A (zh) * | 2016-08-30 | 2017-01-25 | 北京深思数盾科技股份有限公司 | 应用程序性能测试方法、装置和系统 |
CN106484490A (zh) * | 2015-09-02 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的跟踪分析方法和装置 |
CN108334440A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种获取应用性能测试结果的处理方法及装置、客户端 |
CN109542793A (zh) * | 2018-11-30 | 2019-03-29 | 北京小马智行科技有限公司 | 一种程序性能分析方法及装置 |
CN109783345A (zh) * | 2018-12-03 | 2019-05-21 | 百度在线网络技术(北京)有限公司 | 一种小程序性能测试方法和系统 |
CN110008133A (zh) * | 2019-04-16 | 2019-07-12 | 珠海金山网络游戏科技有限公司 | 自动化测试系统、方法、计算设备及存储介质 |
CN110457196A (zh) * | 2019-08-16 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN113574502A (zh) * | 2020-02-12 | 2021-10-29 | 深圳元戎启行科技有限公司 | 无人驾驶车辆操作系统的数据采集方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339535A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种对应用程序进行性能监控的方法及装置 |
CN102902625A (zh) * | 2012-11-14 | 2013-01-30 | 北京奇虎科技有限公司 | 软件性能测试系统和方法 |
-
2014
- 2014-02-25 CN CN201410064760.9A patent/CN104866416B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101339535A (zh) * | 2008-08-21 | 2009-01-07 | 金蝶软件(中国)有限公司 | 一种对应用程序进行性能监控的方法及装置 |
CN102902625A (zh) * | 2012-11-14 | 2013-01-30 | 北京奇虎科技有限公司 | 软件性能测试系统和方法 |
Non-Patent Citations (1)
Title |
---|
阿尤鲁: "《WebGL高级编程——开发Web 3D图形》", 30 June 2013 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484490A (zh) * | 2015-09-02 | 2017-03-08 | 腾讯科技(深圳)有限公司 | 一种应用程序的跟踪分析方法和装置 |
CN106354644A (zh) * | 2016-08-30 | 2017-01-25 | 北京深思数盾科技股份有限公司 | 应用程序性能测试方法、装置和系统 |
CN106354644B (zh) * | 2016-08-30 | 2018-12-14 | 北京深思数盾科技股份有限公司 | 应用程序性能测试方法、装置和系统 |
CN108334440A (zh) * | 2017-01-19 | 2018-07-27 | 阿里巴巴集团控股有限公司 | 一种获取应用性能测试结果的处理方法及装置、客户端 |
CN109542793A (zh) * | 2018-11-30 | 2019-03-29 | 北京小马智行科技有限公司 | 一种程序性能分析方法及装置 |
CN109542793B (zh) * | 2018-11-30 | 2022-06-14 | 北京小马智行科技有限公司 | 一种程序性能分析方法及装置 |
CN109783345B (zh) * | 2018-12-03 | 2022-05-03 | 百度在线网络技术(北京)有限公司 | 一种小程序性能测试方法和系统 |
CN109783345A (zh) * | 2018-12-03 | 2019-05-21 | 百度在线网络技术(北京)有限公司 | 一种小程序性能测试方法和系统 |
CN110008133A (zh) * | 2019-04-16 | 2019-07-12 | 珠海金山网络游戏科技有限公司 | 自动化测试系统、方法、计算设备及存储介质 |
CN110008133B (zh) * | 2019-04-16 | 2022-11-01 | 珠海金山数字网络科技有限公司 | 自动化测试系统、方法、计算设备及存储介质 |
CN110457196A (zh) * | 2019-08-16 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN110457196B (zh) * | 2019-08-16 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN113574502A (zh) * | 2020-02-12 | 2021-10-29 | 深圳元戎启行科技有限公司 | 无人驾驶车辆操作系统的数据采集方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104866416B (zh) | 2019-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403364B2 (en) | Method and terminal device for extracting web page content | |
CN104866416A (zh) | 实现应用程序性能分析的方法和装置 | |
US9922260B2 (en) | Scrapped information providing method and apparatus | |
CN108287918B (zh) | 基于应用页面的音乐播放方法、装置、存储介质和电子设备 | |
CN103164300A (zh) | 一种移动终端触摸屏自动测试方法及装置 | |
KR20150128671A (ko) | 애플리케이션 시나리오 식별 방법, 전력 소비 관리 방법, 장치 및 단말기 장치 | |
CN102841789A (zh) | 一种对浏览器中的用户操作进行录制和回放的方法和装置 | |
KR102202896B1 (ko) | 전자 장치의 웹 페이지 저장 및 표현 방법 | |
EP2806358B1 (en) | Electronic device for operating application | |
CN104951497A (zh) | 用于构建文档的方法和装置 | |
CN106844181B (zh) | 用于记录用户行为的方法、系统及移动终端 | |
TW201525836A (zh) | 頁面操作回饋的方法和裝置 | |
CN106161133B (zh) | 一种网页加载时间的测试方法及装置 | |
EP3062238A1 (en) | Summarization by sentence extraction and translation of summaries containing named entities | |
CN104216646A (zh) | 基于手势创建应用程序的方法及装置 | |
US20200136988A1 (en) | Resource optimization and update method, server, and device | |
KR102471739B1 (ko) | 전자 장치의 히스토리 정보 관리 장치 및 방법 | |
CN108984374B (zh) | 一种数据库性能的测试方法和系统 | |
CN112487036A (zh) | 数据处理方法及装置 | |
CN108241460A (zh) | 图片悬浮显示方法、系统以及计算机可读存储介质 | |
CN105893221B (zh) | 终端运行时长的告警方法及装置 | |
CN106471493A (zh) | 用于管理数据的方法和装置 | |
US20140250251A1 (en) | Automatically and transparently preserving testing state across sessions | |
CN110058938B (zh) | 一种内存处理方法、装置、电子设备和可读介质 | |
CN116339818A (zh) | 代码变更类型的筛选方法、电子设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |