CN105183592B - 用于支持性能分析的方法和装置 - Google Patents

用于支持性能分析的方法和装置 Download PDF

Info

Publication number
CN105183592B
CN105183592B CN201510126355.XA CN201510126355A CN105183592B CN 105183592 B CN105183592 B CN 105183592B CN 201510126355 A CN201510126355 A CN 201510126355A CN 105183592 B CN105183592 B CN 105183592B
Authority
CN
China
Prior art keywords
code
syllabified
syllabified code
file
symbol
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.)
Active
Application number
CN201510126355.XA
Other languages
English (en)
Other versions
CN105183592A (zh
Inventor
黄海涛
高丽萍
简宁胜
齐歆瑜
潘星星
李鹏飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN105183592A publication Critical patent/CN105183592A/zh
Application granted granted Critical
Publication of CN105183592B publication Critical patent/CN105183592B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3428Benchmarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开的各个方面提供一种用于支持性能分析的方法和装置。该方法包括:在电子设备中,编译字节代码,以生成对应于字节代码的原生代码;生成文件,以在该文件中包括字节代码和对应的原生代码;收集符号信息,以建立字节代码中的符号与对应的原生代码的偏移的映射;以及在该文件中包括符号信息,用于实现评测。

Description

用于支持性能分析的方法和装置
相关申请的交叉引用
本公开要求在2014年3月21日提交的题为“Extended OAT File Format Used forSupporting Performance Analysis”的美国临时申请第61/968,707号的权益,其通过引用整体并入本文。
技术领域
本公开涉及用于支持性能分析的方法和装置。
背景技术
本文所提供的背景描述是为了概括地展现本公开的背景的目的。当前提名的发明人的工作,就在该背景部分中描述该工作的范围、以及本说明书的在提交时可能不适合以其他方式作为现有技术的方面而言,既不明示地也不暗示地被承认为相对本公开的现有技术。
通常,评测工具(profiling tool)可以用于进行计算机系统中的性能分析。在一个示例中,计算机系统被周期性地中断,并且评测工具在中断例程(interrupt routine)期间对计算机系统中的各种参数进行采样。采样的数据可以被收集,以评测计算机系统,并且统计分析计算机系统的性能。
发明内容
本公开的各个方面提供一种用来支持性能分析的方法。该方法包括:在电子设备中,编译字节代码,以生成对应于字节代码的原生代码;生成文件,以在文件中包括字节代码和对应的原生代码;收集符号信息,以建立字节代码中的符号与对应的原生代码的偏移的映射;以及在文件中包括符号信息,用于实现评测。
进一步地,在一个实施例中,该方法包括:将来自文件的字节代码和原生代码加载到存储器的用于执行的区段;在执行期间,对程序计数器(PC)进行采样,以获得PC地址;将PC地址转换为,到区段的起始地址的偏移;以及根据符号信息来确定针对该偏移的符号。
在一个示例中,为了收集符号信息,以建立字节代码中的符号与对应的原生代码的偏移的映射,该方法包括:收集方法信息,以建立字节代码中的方法与针对该方法的对应的原生代码的偏移的映射。在另一个示例中,该方法包括:收集字节代码信息,以建立映射字节代码与针对字节代码的对应的原生字节代码的偏移的映射。在另一个示例中,该方法包括:在符号信息中包括具有预定义的含义的一个或者多个符号。
在一个示例中,为了编译字节代码,以生成对应于字节代码的原生代码,该方法包括:当字节代码第一次被执行时,编译字节代码以生成对应于字节代码的原生代码。在另一个示例中,该方法包括:在应用的安装时期,编译该应用的字节代码。在另一个示例中,该方法包括:在电子设备的启动时期,编译字节代码。进一步地,该方法包括:存储文件,并且加载来自文件的原生代码,用于后续的执行。
在一个实施例中,为了在电子设备中编译字节代码以生成对应于字节代码的原生代码,该方法包括启动安卓(Android)运行时(run time)(ART),以编译字节代码,以生成对应于字节代码的原生代码。
进一步地,在一个示例中,该方法包括:生成可执行和可链接格式的文件,以在文件中包括字节代码和对应的原生代码。在一个实施例中,该方法包括:在用于指定动态链接信息的动态符号段中包括符号信息。
本公开的方面提供存储用于使处理器执行操作的指令的非临时性计算机可读介质。该方法包括:在电子设备中,编译字节代码,以生成对应于字节代码的原生代码;生成文件,以在文件中包括字节代码和对应的原生代码;收集符号信息,以建立字节代码中的符号与对应的原生代码的偏移的映射;以及在文件中包括符号信息,用于实现评测。
附图说明
将参考以下附图详细地描述作为示例提出的本公开的各个实施例,其中同样的附图标记引用同样的元件,并且其中:
图1示出了根据本公开的一个实施例的电子设备100的框图;
图2示出了概述根据本公开的一个实施例的过程200的流程图;
图3示出了概述根据本公开的一个实施例的过程300的流程图;
图4示出了根据本公开的一个实施例的动态符号表400。
具体实施方式
图1示出了根据本公开的一个实施例的电子设备100的框图。电子设备100安装有:具有编译器151的运行环境软件。编译器151被配置为将字节代码转换为原生代码,并且在编译期间收集在字节代码中的符号到对应的原生代码之间的映射信息,用于实现性能评测。
电子设备100可以是任何合适的设备,诸如桌面计算机、便携式计算机、移动电话、平板、多媒体播放器、袖珍计算器、个人数字助手(PDA)、智能手表、智能相机、以及包括用来执行软件指令的处理器101的类似设备。
电子设备100包括硬件部件,诸如处理器101、存储器模块110、总线102等,以及软件部件,诸如存储在存储器模块110中的各种代码指令。硬件部件根据软件部件进行操作以实行各种任务。
电子设备100可以包括其他合适的部件(未示出),诸如显示器、触摸屏、麦克风、通信部件等。在一个实施例中,电子设备100包括单个集成电路(IC)芯片,在该单个IC芯片上集成了诸如处理器101、存储器模块110等各种电路。在另一个实施例中,电子设备100包括多个IC芯片,诸如处理器芯片、存储器芯片等。
处理器101包括一个或者多个处理单元,用来执行各种代码指令,以实行各种任务。在一个示例中,处理器101是多核处理器,诸如双核处理器、四核处理器等。进一步地,处理器101可以具有任何合适的架构,诸如x86架构、精简指令集计算(RISC)架构、复杂指令集计算(CISC)架构等。在一个示例中,电子设备100是具有高级RISC机器(ARM)类型处理器的移动设备。
代码指令可以是可由处理器101直接地执行的低级别代码,诸如机器代码(原生代码),或者可以是可先被翻译成机器代码然后被执行的高级别代码,诸如在Java语言中的、在C语言中的等等。
存储器模块110包括为各种存储需要提供存储器空间的一个或者多个存储介质。在一个示例中,存储器模块110存储了将由处理器101执行的代码指令,并且存储了将由处理器101处理的数据。在另一个示例中,存储器模块110包括被分配用于系统存储的存储器空间,并且包括被分配用于用户存储的存储器空间。
存储介质包括但不限于硬盘驱动、光盘、固态驱动、只读存储器(ROM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存等。
根据本公开的一个方面,存储器模块110存储了各种计算机程序,诸如系统程序、用户应用程序等。每个计算机程序包括将被执行以实行任务的代码指令。在图1的示例中,在存储器模块110中存储器空间120被分配用于存储内核程序。内核程序是用于电子设备100的操作系统的使用户应用程序与电子设备100的硬件部件联系的部分。例如,内核程序管理来自诸如用户应用程序等软件部件的输入/输出请求,并且将它们翻译成用于诸如处理器101、存储器模块110等硬件部件的数据处理指令。
在图1的示例中,内核程序包括评测内核模块125。在一个示例中,评测内核模块125被配置为周期性地(例如,每50ms)引起中断,并且在中断例程期间获得在处理器101中的程序计数器(PC)寄存器中的作为PC地址的值。在一个示例中,PC地址是由处理器101执行的指令的当前地址。
进一步地,在图1的示例中,在存储器模块110中存储器空间150被分配用于存储适合于电子设备100的运行环境软件。运行环境软件被安装在电子设备100中以提供Java运行环境(JRE),使得Java字节代码可以在电子设备100中被执行。在一个示例中,Java软件程序被执行,以启动电子设备100中的用于执行Java字节代码的Java虚拟机。在一个示例中,电子设备100是安卓系统,并且存储器空间150存储用于安卓系统的安卓运行时(ART)软件程序。
在一个实施例中,用户应用的源代码以Java语言生成。对源代码进行编译,以生成用于用户应用的Java字节代码。Java字节代码可以由各种Java虚拟机执行。在图1的示例中,存储器空间160被分配用于存储用于用户应用的Java字节代码(.dex文件)。为了执行Java字节代码,电子设备100启动Java虚拟机。Java虚拟机为Java字节代码提供Java运行环境。在执行Java字节代码之后,在一个示例中,Java虚拟机被终止。
根据本公开的一个方面,Java虚拟机ART将提前(ahead-of-time,AOT)编译用于Java字节代码的执行,以改善应用性能。Java虚拟机ART包括被配置用于将Java字节代码转换为用于电子设备100的原生代码的编译器151。在一个示例中,当Java虚拟机ART第一次执行以Java字节代码形式的用户应用诸如存储在存储器空间160处的用户应用时,编译器151对用户应用进行编译,以将Java字节代码转换为原生代码,生成诸如.oat文件之类的文件,并且将该原生代码包括在.oat文件中。在图1的示例中,存储器空间170被分配用于存储.oat文件。.oat文件中的原生代码被加载到例如存储器空间130中,并继而被执行。进一步地,当Java虚拟机ART再次执行用户应用时,访问并执行存储在.oat文件中的原生代码。注意,编译也可以发生在用户应用的安装时期、或者在电子设备100的第一次启动时期。
具体地,在图1的示例中,.oat文件为可执行和可链接格式(ELF)。.oat文件包括多个段,诸如rodata段171、文本段172、动态符号段180等。注意,.oat文件包括图1中未示出的其他段。在一个示例中,rodata段171包括oat数据,诸如类(class)数据、用于用户应用的字节代码等;文本段172包括原生代码和附属信息;并且动态符号段180包括动态链接信息。
通常,动态链接信息在加载和执行期间被使用。例如,动态符号段180包括第一符号“oatdata”到第一偏移OFFSET_1的第一映射、以及第二符号“oatexec”到第二偏移OFFSET_2的第二映射。第一符号“oatdata”是针对rodata段171的符号,而第二符号“oatexec”是针对文本段172的符号。
在一个示例中,为了执行用户应用,根据动态符号段180中的动态链接信息,存储器区段130被分配用于加载代码,诸如rodata段171、文本段172等。在图1的示例中,存储器区段130起始于被示出为“START”的地址处,rodata段171作为rodata段131被加载到存储器段130中,具有到START地址的第一偏移(OFFSET_1);并且文本段172作为文本段132被加载到存储器区段130中,具有到START地址的第二偏移(OFFSET_2)。然后,在一个示例中,文本段132中的原生代码由处理器101执行。
在该示例中,在每次执行用户应用时,可以将不同的存储器区段130分配用于加载代码,诸如rodata段171和文本段172等。因此,代码每次可以被加载到不同的存储器地址中。然而,针对执行,维持所分配的存储器区段130的存储器地址对START地址的偏移。在一个示例中,当处理器101执行原生代码时,PC地址是原生代码的存储器地址,PC地址、原生代码的偏移、与存储器区段130的START地址的关系,可以被表示如公式1所示:
PC地址=START+偏移 (公式1)
在每次执行用户应用时,存储器区段130的START地址可以是不同的,当原生代码在执行中时PC地址可以是不同的,并且偏移是相同的。
根据本公开的一个方面,为了促进性能评测,编译器151包括符号收集器代码155,该符号收集器代码155被配置用于在编译期间收集用于收集符号信息,该符号信息用于建立在字节代码中的符号与对应的原生代码的偏移的映射,并且符号信息被存储在.oat文件中,诸如在动态符号区段180中。
在一个示例中,编译器151收集针对在字节代码中的方法(函数)的符号信息。针对用于方法的符号信息,建立了字节代码中的方法符号与该方法的对应的原生代码的偏移的映射。在另一个示例中,编译器151收集针对字节代码的符号信息。针对字节代码的符号信息,建立了字节代码与该字节代码的对应的原生代码的偏移的映射。在另一个示例中,编译器151收集针对预定义的特殊属性的特殊符号信息。例如,特殊符号“$t”被预定义以指示基于thumb的指令反汇编属性,并且特殊符号“$a”被预定义以指示基于ARM的指令反汇编属性。因此,针对特殊符号的特殊符号信息,建立了针对特殊属性的特殊符号到该特殊属性的对应的原生代码的偏移的映射。详细的编译过程参考图2描述。
在图1的示例中,存储器空间140被分配用于存储用于评测工具的代码指令。在一个示例中,评测工具被配置用于通过评测内核模块125获得采样到的PC地址,并且基于采样到的PC地址来分析电子设备100的性能。详细的评测过程参考图3描述。
图2示出了绘出根据本公开的一个实施例的过程200的流程图。在图1的示例中,Java语言形式的应用程序被翻译为Java字节代码,并且Java字节代码被存储在存储器模块110中的存储器空间160处。当第一次执行Java字节代码时,在电子设备100中执行过程200。过程在S201处开始并且向S210继续进行。
在S210处,对字节代码进行编译以生成原生代码。在图1的示例中,为了第一次执行Java字节代码,处理器101执行存储在存储空间150处的Java运行环境,以启动ART Java虚拟机。ART Java虚拟机提供用于执行Java字节代码的Java运行环境。在该示例中,编译器151将Java字节代码编译为原生代码。在另一个示例中,在第一次安装应用程序时,对字节代码进行编译以生成原生代码。在另一个示例中,在第一次启动电子设备100时,对字节代码进行编译以生成原生代码。
在S220处,字节代码和原生代码被组合在文件中。在图1的示例中,编译器151生成.oat文件并且,存储器空间170被分配用于存储.oat文件。.oat文件包括rodata段171中的字节代码并且包括文本段172中的原生代码。
在S230处,收集用于建立字节代码中的符号与对应的原生代码的偏移的映射的符号信息。在一个示例中,编译器151收集符号信息(例如,符号到偏移的映射信息)诸如针对字节代码中的方法的符号信息、针对字节代码的符号信息、针对特殊符号的符号信息等等以及在编译期间对应的符号代码的偏移。
在S240处,将符号信息包括在文件中。在图1的示例中,将符号信息包括在.oat文件的动态符号段180中。在一个示例中,将符号信息以动态符号表形式包括在的动态符号段180中。存储.oat文件,并且.oat文件中的原生代码可以被合适地加载,并且可以由处理器101执行,以执行用户应用。过程前进到S299并且终止。
在一个示例中,为了执行.oat文件中的原生代码,存储区段诸如存储器区段130被分配,并且rodata段171作为rodata段131被加载到存储器区段130中,具有到START地址的第一偏移(OFFSET_1),并且文本段172作为文本段132被加载到存储器区段130中,具有到START地址的第二偏移(OFFSET_2)。因此,字节代码中的方法以及字节代码被加载到存储器区段130中,具有对存储器区段130的START地址的一致的偏移。处理器101然后执行文本段132中的原生代码。
在示例中,为了再次执行用户应用,.oat文件中的原生代码可以被再次加载并且由处理器101执行。根据本公开的一个方面,每次执行用户应用时,不同的存储器区段130可以被分配用于加载代码,诸如rodata段171和文本段172等。因此,每次代码可以被加载到不同的存储器地址中。然而,针对执行,一致地维持存储器地址到所分配的存储器区段130的START地址的偏移。因此,符号到偏移的映射信息可以用于识别符号并且协助评测。
图3示出了绘出根据本公开的一个实施例的评测过程300的流程图。在一个示例中,当处理器101执行存储在存储器空间140处的评测工具软件时,执行评测过程300,以根据诸如基准(benchmark)应用之类的应用确定电子设备100的性能。评测过程300开始于S301处,并且前进至S310。
在S310处,用于应用的原生代码被加载到存储器区段,用于执行。当应用第一次被执行时,根据过程200对应用进行编译,以生成.oat文件,以包括符号信息,以协助评测。当用于应用的.oat文件存在时,.oat文件中的原生代码被加载到存储器区段。在一个示例中,为了根据在存储器空间160处的用户应用进行评测,存储器区段诸如存储器区段130被分配用于从存储在存储器空间170处的.oat文件加载字节代码和原生代码。例如,rodata段171作为rodata段131被加载到存储器区段130中,具有到START地址的第一偏移(OFFSET_1),并且文本段172作为文本段132被加载到存储器区段130中,具到对START地址的第二偏移(OFFSET_2)。然后,处理器101执行本文段132中的原生代码。
在S320处,周期性地对程序计数器(PC)进行采样,以获得采样到的PC地址。在一个示例中,评测工具周期性地引起中断,并且在中断例程期间,评测内核模块125获得程序计数器中的地址作为PC地址。
在S330处,PC地址被转换成偏移。在一个示例中,评测工具根据Eq.1计算作为PC地址到存储器区段130的START地址的差异的偏移。
在S340处,确定对应于偏移的符号。在一个示例中,评测工具基于动态符号段180中的符号映射信息来确定偏移的对应的符号。
在S350处,当评测工具收集到足够的样本时,评测过程前进至S360;否则,评测过程返回S320,以对PC寄存器进行进一步采样。
在S360处,生成评测报告。评测工具生成评测报告。评测报告可以包括各种信息,诸如总处理器时间针对每个方法的百分比、针对每个字节代码的处理器时间,等等。然后,过程前进至S399并且终止。
注意,评测过程可以被适当地修改。在一个示例中,PC地址被记录在存储器空间中,并且可以在已经收集足够的PC地址样本之后,线下地执行步骤S330和S340。
图4示出了根据本公开的一个实施例的动态符号表400。在一个示例中,符号信息以如动态符号表400的格式,被存储在动态符号段180中。动态符号表400按照行存储用于符号的信息,并且针对每个符号包括八列410-480。在针对符号的行中,第一列410存储用于该符号的索引;第二列420存储用于该符号的偏移;第三列430存储代码大小;第四列440存储用于该符号的类型;第五列450存储符号绑定属性;第六列460存储可见度信息;第七列470存储区段索引;并且第八列480存储符号的名称。
动态符号表400可以包括针对各种符号诸如段符号、方法符号、字节代码符号、特殊符号等的动态链接信息。在图4的示例中,具有索引1的行存储表示rodata段的段符号“oatdata”的符号信息。具有索引2的行存储用于表示文本段的段符号“oatexec”的符号信息。具有索引34的行存储针对方法符号“Linpack500.daxpy”的符号信息。具有索引176的行存储针对方法符号“Linpack500.dgefa”的符号信息。具有索引580的行存储针对方法符号“Linpack500.matgen”的符号信息。具有索引35的行存储针对字节代码符号“[0x0]if-lezv10_0,0x46(+46)”的符号信息,第二列420中的值是对应于字节代码的原生代码的偏移,并且在字节代码符号名称中,“[0x0]”是字节代码的偏移,并且“if-lez v10_0,0x46(+46)”是字节代码的反汇编。具有索引36的行存储针对字节代码符号“[0x2]const–wide/16v1_1#0x0,#0”的符号信息,在第二列420中的值是对应于字节代码的原生代码的偏移,并且在字节代码符号名称中,“[0x2]”是字节代码的偏移并且“const–wide/16v1_1#0x0,#0”是字节代码的反汇编。具有索引47的行存储用于字节代码符号“[0x14]neg–int v2_3”的符号信息,第二列420中的值是对应于字节代码的原生代码的偏移,并且在字节代码符号名称中,“[0x14]”是字节代码的偏移,“neg–int v2_3”是字节代码的反汇编。
虽然已经结合本发明的作为示例提出的特定实施例,描述了本发明的方面,但是可以对实施例进行替代、修改和变化。因此,如本文所阐述的实施例旨在是说明性的而非限制性的。可以在不脱离下文所阐述的权利要求书的情况下做出改变。

Claims (20)

1.一种用于支持性能分析的方法,所述方法包括:
在电子设备中,编译字节代码,以生成对应于所述字节代码的原生代码,所述电子设备包括评测工具;
生成文件,以将所述字节代码和对应的所述原生代码包括在所述文件中;
收集符号信息,以建立所述字节代码中的符号与对应的所述原生代码的偏移的映射;以及
将所述符号信息包括在所述文件中,所述文件通过使所述电子设备的所述评测工具进行以下各项来实现评测:(i)周期性地中断,(ii)从程序计数器获得地址,(iii)通过使用所述地址来计算对应的原生代码中的偏移,以及(iv)将所述偏移映射到所述字节代码中的符号。
2.根据权利要求1所述的方法,进一步包括:
将所述字节代码和所述原生代码从所述文件加载到存储器的用于进行执行的区段;
在执行期间,对程序计数器(PC)进行采样,以获得PC地址;
将所述PC地址转换为到所述区段的起始地址的偏移;以及
根据所述符号信息,确定针对所述偏移的符号。
3.根据权利要求1所述的方法,其中收集所述符号信息、以建立所述字节代码中的所述符号与对应的所述原生代码的所述偏移的映射进一步包括:
收集方法信息,以建立所述字节代码中的方法与针对所述方法的对应的原生代码的偏移的映射。
4.根据权利要求1所述的方法,其中收集所述符号信息、以建立所述字节代码中的所述符号与对应的所述原生代码的所述偏移的映射进一步包括:
收集字节代码信息,以建立字节代码与针对所述字节代码的对应的原生代码的偏移的映射。
5.根据权利要求1所述的方法,进一步包括:
将具有预定义的含义的一个或者多个符号包括在所述符号信息中。
6.根据权利要求1所述的方法,其中编译所述字节代码、以生成对应于所述字节代码的所述原生代码进一步包括以下各项中的至少一项:
当所述字节代码第一次被执行时,编译所述字节代码以生成对应于所述字节代码的所述原生代码;
在应用的安装时期,编译所述应用的所述字节代码;以及
在所述电子设备的启动时期,编译所述字节代码。
7.根据权利要求1所述的方法,其中将所述符号信息包括在所述文件中用于实现评测进一步包括:
将所述符号信息包括在所述文件的符号表中,所述符号信息用于建立针对所述字节代码的所述符号与对应的所述原生代码的所述偏移的映射。
8.根据权利要求1所述的方法,其中在所述电子设备中编译所述字节代码、以生成对应于所述字节代码的所述原生代码进一步包括:
启动安卓运行时(ART),以编译所述字节代码,以生成对应于所述字节代码的所述原生代码。
9.根据权利要求1所述的方法,其中生成所述文件、以将所述字节代码和对应的所述原生代码包括在所述文件中进一步包括:
生成可执行和可链接格式的所述文件,以将所述字节代码和对应的所述原生代码包括在所述文件中。
10.根据权利要求1所述的方法,其中将所述符号信息包括在所述文件中用于实现评测进一步包括:
将所述符号信息包括在用于指定动态链接信息的动态符号段中。
11.一种非临时性计算机可读介质,存储有用于使得处理器执行用于支持性能分析的操作的指令,所述操作包括:
在电子设备中,编译字节代码,以生成对应于所述字节代码的原生代码,所述电子设备包括评测工具;
生成文件,以将所述字节代码和对应的所述原生代码包括在所述文件中;
收集符号信息,以建立所述字节代码中的符号与对应的所述原生代码的偏移的映射;以及
将所述符号信息包括在所述文件中,所述文件通过使所述电子设备的所述评测工具进行以下各项来实现评测:(i)周期性地中断,(ii)从程序计数器获得地址,(iii)通过使用所述地址来计算对应的原生代码中的偏移,以及(iv)将所述偏移映射到所述字节代码中的符号。
12.根据权利要求11所述的非临时性计算机可读介质,所述操作进一步包括:
将所述字节代码和所述原生代码从所述文件加载到存储器的用于进行执行的区段;
在执行期间,对程序计数器(PC)进行采样,以获得PC地址;
将所述PC地址转换为,到所述区段的起始地址的偏移;以及
根据所述符号信息,确定针对所述偏移的符号。
13.根据权利要求11所述的非临时性计算机可读介质,其中收集所述符号信息、以建立所述字节代码中的所述符号与对应的所述原生代码的所述偏移的映射进一步包括:
收集方法信息,以建立所述字节代码中的方法与针对所述方法的对应的原生代码的偏移的映射。
14.根据权利要求11所述的非临时性计算机可读介质,其中收集所述符号信息、以建立所述字节代码中的所述符号与对应的所述原生代码的所述偏移的映射进一步包括:
收集字节代码信息,以建立字节代码与针对所述字节代码的对应的原生代码的偏移的映射。
15.根据权利要求11所述的非临时性计算机可读介质,所述操作进一步包括:
将具有预定义的含义的一个或者多个符号包括在所述符号信息中。
16.根据权利要求11所述的非临时性计算机可读介质,其中编译所述字节代码、以生成对应于所述字节代码的所述原生代码进一步包括以下各项中的至少一项:
当所述字节代码第一次被执行时,编译所述字节代码以生成对应于所述字节代码的所述原生代码;
在应用的安装时期,编译所述应用的所述字节代码;以及
在所述电子设备的启动时期,编译所述字节代码。
17.根据权利要求11所述的非临时性计算机可读介质,其中所述操作进一步包括:
将所述符号信息包括在所述文件的符号表中,所述符号信息用于建立所述字节代码的所述符号与对应的所述原生代码的所述偏移的映射。
18.根据权利要求11所述的非临时性计算机可读介质,其中在所述电子设备中编译所述字节代码、以生成对应于所述字节代码的所述原生代码进一步包括:
启动安卓运行时(ART),以编译所述字节代码,以生成对应于所述字节代码的所述原生代码。
19.根据权利要求11所述的非临时性计算机可读介质,其中生成所述文件、以将所述字节代码和对应的所述原生代码包括在所述文件中进一步包括:
生成可执行和可链接格式的所述文件,以将所述字节代码和对应的所述原生代码包括在所述文件中。
20.根据权利要求11所述的非临时性计算机可读介质,其中将所述符号信息包括在所述文件中用于实现评测进一步包括:
将所述符号信息包括在用于指定动态链接信息的动态符号段中。
CN201510126355.XA 2014-03-21 2015-03-20 用于支持性能分析的方法和装置 Active CN105183592B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201461968707P 2014-03-21 2014-03-21
US61/968,707 2014-03-21

Publications (2)

Publication Number Publication Date
CN105183592A CN105183592A (zh) 2015-12-23
CN105183592B true CN105183592B (zh) 2019-08-16

Family

ID=54142239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510126355.XA Active CN105183592B (zh) 2014-03-21 2015-03-20 用于支持性能分析的方法和装置

Country Status (2)

Country Link
US (1) US9558096B2 (zh)
CN (1) CN105183592B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061571B2 (en) * 2015-11-16 2018-08-28 Qualcomm Innovation Center, Inc. System and method for link time optimization
US9864825B2 (en) * 2016-02-01 2018-01-09 Ciena Corporation Systems and methods for dynamic symbols for devices in electrical schematics
CN106066686B (zh) * 2016-05-31 2019-02-05 Oppo广东移动通信有限公司 一种信息处理方法及终端设备
CN106228041B (zh) * 2016-07-21 2018-11-20 北京理工大学 一种针对Android预编译的代码保护方法
US10133560B2 (en) * 2016-09-22 2018-11-20 Qualcomm Innovation Center, Inc. Link time program optimization in presence of a linker script
CN107690643A (zh) * 2017-03-16 2018-02-13 深圳大趋智能科技有限公司 安卓apk启动时签名认证的方法及其装置
US20180275976A1 (en) * 2017-03-22 2018-09-27 Qualcomm Innovation Center, Inc. Link time optimization in presence of a linker script using path based rules
CN110119274A (zh) * 2018-02-05 2019-08-13 北京智明星通科技股份有限公司 一种数据编译的方法、装置以及电子终端、计算机可读存储介质
CN110941433B (zh) * 2019-11-13 2022-03-22 佛山职业技术学院 一种边缘辅助部署第三方应用到微控制器方法及系统
US20220100499A1 (en) * 2021-12-09 2022-03-31 Intel Corporation Performance enhancement for application development utilizing smart runtime analyzer and advisor

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1571955A (zh) * 2001-10-19 2005-01-26 皇家飞利浦电子股份有限公司 将字节码编译成原码的方法
EP1632853A1 (en) * 2004-09-07 2006-03-08 Sony Ericsson Mobile Communications AB Method of running an application, apparatus implementing the method and computer program product
US8510725B2 (en) * 2009-01-30 2013-08-13 Advanced Micro Devices, Inc. Application of platform dependent routines in virtual machines by embedding native code in class files
CN103412754A (zh) * 2013-08-15 2013-11-27 优视科技有限公司 动态语言代码执行方法和装置
CN103605554A (zh) * 2012-06-26 2014-02-26 马维尔国际贸易有限公司 用于代码性能分析的方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147969A1 (en) * 1998-10-21 2002-10-10 Richard A. Lethin Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6295643B1 (en) * 1998-12-10 2001-09-25 International Business Machines Corporation Method and apparatus for improving java virtual machine performance using persistent execution information
US6658652B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6988263B1 (en) * 2000-07-10 2006-01-17 International Business Machines Corporation Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
US6678883B1 (en) * 2000-07-10 2004-01-13 International Business Machines Corporation Apparatus and method for creating a trace file for a trace of a computer program based on loaded module information
KR100503077B1 (ko) * 2002-12-02 2005-07-21 삼성전자주식회사 자바 실행 장치 및 자바 실행 방법
US7373343B2 (en) * 2005-04-12 2008-05-13 International Business Machines Corporation Requirements management semantics modeling
US8214813B2 (en) * 2007-01-12 2012-07-03 Microsoft Corporation Code optimization across interfaces

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1571955A (zh) * 2001-10-19 2005-01-26 皇家飞利浦电子股份有限公司 将字节码编译成原码的方法
EP1632853A1 (en) * 2004-09-07 2006-03-08 Sony Ericsson Mobile Communications AB Method of running an application, apparatus implementing the method and computer program product
US8510725B2 (en) * 2009-01-30 2013-08-13 Advanced Micro Devices, Inc. Application of platform dependent routines in virtual machines by embedding native code in class files
CN103605554A (zh) * 2012-06-26 2014-02-26 马维尔国际贸易有限公司 用于代码性能分析的方法和装置
CN103412754A (zh) * 2013-08-15 2013-11-27 优视科技有限公司 动态语言代码执行方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Kitkat系列文章—OAT文件分析—Part2;Peter Pan;《http://www.importnew.com/8825.html》;20140124;第1-3页

Also Published As

Publication number Publication date
US20150269052A1 (en) 2015-09-24
US9558096B2 (en) 2017-01-31
CN105183592A (zh) 2015-12-23

Similar Documents

Publication Publication Date Title
CN105183592B (zh) 用于支持性能分析的方法和装置
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
CN107423048B (zh) 数据收集的方法、装置、介质和计算设备
US9098308B2 (en) Method and apparatus for code performance analysis based on execution trace information
TWI533217B (zh) 用於運行時間系統的電腦實施方法及電腦可讀取儲存記憶體
US8381194B2 (en) Methods and apparatuses for selective code coverage
US20190317882A1 (en) Method and apparatus for testing a code file
US8490061B2 (en) Profiling application performance according to data structure
US8677322B2 (en) Debugging in a multiple address space environment
US8832666B2 (en) Dynamic instrumentation
EP2706459B1 (en) Apparatus and method for validating a compiler for a reconfigurable processor
CN107368420A (zh) Api测试方法、装置及电子设备
EP2659362A2 (en) Emulating pointers
CN102722438B (zh) 一种内核调试的方法和设备
KR20220113372A (ko) 통합된 참조물 및 2차 객체 표시
US8769498B2 (en) Warning of register and storage area assignment errors
US8819626B2 (en) Sharable development environment bookmarks for functional/data flow
US8756580B2 (en) Instance-based field affinity optimization
US11321236B2 (en) Reduced instructions to generate global variable addresses
US20070089102A1 (en) System and method for analyzing software performance without requiring hardware
EP3436948A1 (en) System for monitoring and reporting performance and correctness issues across design, compile and runtime
CN112783574A (zh) 应用程序开发方法、装置、设备和存储介质
CN113704020B (zh) 固态硬盘的出错现场数据的解析方法以及装置
CN111625432B (zh) 页面加载耗时确定方法、装置和计算机可读存储介质
Zilli et al. Hardware/software co-design for a high-performance Java Card interpreter in low-end embedded systems

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200429

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200429

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200429

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Saint Michael

Patentee before: MARVELL WORLD TRADE Ltd.