CN116257401A - 利用智能运行时分析器和建议器的应用开发的性能增强 - Google Patents
利用智能运行时分析器和建议器的应用开发的性能增强 Download PDFInfo
- Publication number
- CN116257401A CN116257401A CN202211308666.4A CN202211308666A CN116257401A CN 116257401 A CN116257401 A CN 116257401A CN 202211308666 A CN202211308666 A CN 202211308666A CN 116257401 A CN116257401 A CN 116257401A
- Authority
- CN
- China
- Prior art keywords
- application
- diagnostic
- runtime
- advice
- information
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3442—Recording 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 planning or managing the needed capacity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
描述了使用智能运行时分析器和建议器来改进开发的应用的性能。一种方法的示例包括:在平台处接收应用的代码;运行应用;访问应用的运行时层数据;基于运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;从应用在一个或多个用户系统上的操作来接收应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在诊断和建议数据库中。
Description
技术领域
本公开总体上涉及计算设备的领域,并且更具体地,涉及使用智能运行时分析器和建议器的对所开发应用的性能的改进。
背景技术
AndroidTM操作系统上的应用的开发者正在激烈地竞争以在增强应用性能的同时降低功率并尽可能高效地运行应用。已经开发了各种编译器、工具和优化器以帮助构建具有高性能和低能量分布曲线的应用。然而,在Android运行时架构(RTA)层中大量信息仍未被开发。
发明内容
根据本申请的一个发明,提供了一种方法,包括:在平台处接收应用的代码;运行所述应用;访问所述应用的运行时层数据;基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
根据本申请的另一方面,提供了一种包括指令的非暂态计算机可读存储介质,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行以下操作:在平台处接收应用的代码;运行所述应用;访问所述应用的运行时层数据;基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
根据本申请的又一方面,提供了一种装置,包括:一个或多个处理器,包括处理器电路;计算机存储器设备,用于存储计算机指令;以及存储设备,用于存储包括诊断和建议数据库的数据;其中,所述一个或多个处理器用于:在平台处接收Android应用的代码;运行所述Android应用;访问所述Android应用的Android运行时层数据;基于所述Android运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在所述诊断和建议数据库中;从所述Android应用在一个或多个用户系统上的操作来接收所述Android应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
附图说明
在附图的图示中通过示例而非限制的方式示出了本文描述的实施例,在附图中相似的参考标号指代相似的元素。
图1示出了根据一些实施例的用于应用开发的运行时分析器和建议器工具;
图2是根据一些实施例的智能运行时分析器和建议器系统的图示;
图3A示出了根据一些实施例的基于运行时分析器和建议器的开发工作流;
图3B示出了根据一些实施例的由智能运行时分析器和建议器系统访问的运行时层元素;
图3C示出了根据一些实施例的基于诊断和建议的重新编译;
图4是根据一些实施例的通过运行时分析器和建议器应用的诊断收集的图示;
图5是根据一些实施例的由运行时分析器和建议器系统生成的诊断和建议信息的图示;
图6是图示出根据一些实施例的用于在应用开发中提供诊断和建议信息的过程的流程图;
图7示出了根据一些实施例的用于包括智能运行时分析和建议操作的操作的示例性计算架构;
图8是根据一些实施例的被构造为执行机器可读指令或操作的示例处理器平台的框图;
图9是处理器电路的示例实现方式的框图;以及
图10是图示出示例软件分发平台的框图。
具体实施方式
本文描述的实施例涉及使用智能运行时分析器和建议器的对所开发应用的性能的改进。
在包括Android应用(Android是指用于移动设备和其他设备的Android操作系统)的应用的常规开发中,存在协助构建应用的已知工具和优化器。这些工具可以被应用在Android应用中以改进性能和降低能耗。例如,简档指导优化(Profile GuidedOptimization,PGO)是一种众所周知的基于简档的编译器优化技术。
然而,诸如PGO之类的工具聚焦于通过基于应用的样本数据集生成经优化代码来优化应用。PGO对于RTA(Android Runtime Architecture,Android运行时架构)层中存在的信息是无知的。Android运行时(Android Runtime,ART)是由Android操作系统使用的应用运行时环境。
虽然RTA可以用于企业平台和操作环境中,但是嵌入式系统和低能量边缘计算设备(例如,基于Android的智能电话)具有不同的特性和要求,并且因此企业解决方案通常不提供足够的结果。
在一些实施例中,提供诊断和建议器工具以智能地处理在Android运行时层的可执行和可链接格式(ELF)部分(二进制目标文件)中可用的内部运行时信息(包括符号属性、区段特性以及更多信息),以产生有效的诊断。ART的ELF和相关ABI(应用二进制接口)方面在本文中被称为“ART层”。利用此类信息的技术不存在于Android平台中,并且提供应用运行时信息的解决方案可以显著地增强Android上的应用开发者和库供应商的能力,以实现更高级别的性能和更低能量配置文件。
在一些实施例中,应用开发工具包括用于利用内部运行时信息来开发应用的静态组件和允许开发者从用户接收可选(optional)反馈的动态组件两者。
图1示出了根据一些实施例的用于应用开发的运行时分析器和建议器工具。在一些实施例中,运行时分析器和建议器诊断工具100包括被称为开发和构建组件110的第一组件,在开发和构建组件110中,在产品开发的开发和构建阶段中提供基于诊断和建议器的性能改进。
诊断工具100还包括被称为诊断收集组件120的第二组件。在诊断收集组件120中,可以通过安装智能运行时分析器和建议器(在此被称为Smartan)Android应用而从选择参与用户体验改进程序的用户来收集附加诊断(除了在开发和构建组件110中提供的诊断之外)。
在一些实施例中,诊断工具100(可以被称为Smartan工具)处理与在ART的ELF部分(二进制目标文件)中可用的应用有关的原始信息,其中原始信息可以包括:
(a)重新定位信息;
(b)符号属性和引用;
(c)分段和区段特性;以及
(d)动态分段标签;以及
(e)其他运行时数据。
在一些实施例中,诊断工具100还可以将来自ELF的信息与其他运行时数据(一个或多个其他运行时人工产物(artefact),诸如调用图(参考表示程序中的关系的控制流程图))进行组合,以产生有意义和有效的诊断。
在一些实施例中,工具可以以两种方式从ELF获得原始信息:
(1)利用开发和构建组件110:通过读取在磁盘上构建的二进制目标文件(Android上的ELF)来静态地获得原始数据。然而,当应用可执行文件未正在运行时,来自二进制目标文件的某些信息可能不可用。
(2)利用诊断收集组件120:为了获得附加信息,例如使用dlsym(动态库符号)API动态地访问的符号、运行时实际存储器使用情况和其他相关运行时信息,诊断工具100还读取存储器内二进制目标文件区段和库细节。如果用户允许(选择加入)守护进程(daemon)的操作,则可以经由在用户系统上运行的守护进程(例如,图5中所示的守护进程576)来获得附加信息。
开发和构建组件110和诊断收集组件120可以在应用开发130中联合使用以生成应用产品150。
在一些实施例中,运行时分析器和建议器工具100可以用于发掘ART层信息的潜力,以提供ART层中当前不容易获得的关键诊断和建议信息。该工具用于处理来自二进制目标文件的原始信息,将其与其他运行时人工产物进行组合,并且然后为开发者产生结果诊断。在特定实现方式中,默认该工具可以生成到标准输出的输出。然而,若干其他开发者友好选项也是可用的,例如将数据存储在数据库中(该数据库可以稍后用于比较和测量进展),将输出存储在纯文本文件中,或其他类似的输出。
一旦生成诊断,开发者就可以使用这些诊断或参考与用于修复由工具检测到的运行时问题、编程构造或不正确选项的可能解决方案有关的伴随文档,并且相应地重建应用。
除了静态开发阶段之外,本发明还提供了Android系统服务(通过用户设备上的所安装的守护进程)以使得应用能够分析在静态开发阶段期间不能被分析的附加动态运行时方面。在一些实施例中,这是可选特征,用户可以选择来选择加入作为用户体验改进程序的一部分来帮助开发者改进应用。例如,利用运行时分析器和建议器工具来开发的Android应用开发者可以在其应用中提供到Smartan应用的链接。用户然后可以在他们的设备上安装用于运行时分析器和建议器工具的应用并且实现监视。如果用户具有支持运行时分析器和建议器工具应用的多个应用,则用户可以选择性地仅启用用户想要选择加入的那些应用。
由运行时分析器和建议器工具应用捕捉的动态运行时方面可以包括但不限于:
(1)为了更好地理解应用运行时行为的火焰图(提供诊断数据的可视化)。
(2)用于在执行期间理解存储器使用情况和分片的Meminfo(显示当前存储器使用情况)。
(3)与应用的动态共享库编译(dlopen’ed)(指用于打开动态链接库的函数)有关的启示,例如可以被缓存的重新定位、可以被合并以用于更好的缓存管理的存储器区段,等等。
在一些实现方式中,由运行时分析器和建议器工具应用提供的守护进程功能可以默认在Android堆栈(例如,Intel Celadon堆栈)上被提供作为在开发者选项下的选项(例如,在特定情况下在名称SmartanDiag下)。以这种方式,用户可以通过打开选项并选择根据需要将监视的应用来选择加入。
在一些实施例中,除了这样的运行时分析以外,运行时分析器和建议器工具应用还可以通过将某些Android内核参数(例如,hugepagesz(页面大小参数)等)调整到对于用户选择的那些应用而言的最佳值来提供动态优化和性能提升,而不影响设备上的任何其他应用的性能。
图2是根据一些实施例的智能运行时分析器和建议器系统的图示。在一些实施例中,应用开发200包括在特定应用的开发中基于运行时分析器和建议器的工作流210的操作,以生成第一组诊断和建议信息215,该信息被提供给例如诊断和建议数据库240。基于从在磁盘上构建的二进制目标文件(Android上的ELF)读取的原始数据来生成第一组诊断和建议信息215。第一组诊断和建议信息215可以被称为静态诊断和建议信息,因为这些信息是在应用的初始开发中被开发的。通过在Android运行时层的ELF部分中分析内部运行时信息,来生成第一组诊断和建议信息。
在一些实施例中,智能运行时分析器和建议器系统还包括通过运行时分析器和建议器应用的操作而从诊断收集接收数据270,其中当相应用户选择加入应用的可选操作时,运行时分析器和建议器应用在一个或多个用户系统上运行。通过运行时分析器和建议器应用的操作的诊断收集270用于生成第二组诊断和建议信息275,该第二组诊断和建议信息275可以被称为动态诊断和建议信息,因为这些信息是在应用的活动用户操作中被开发的。第二组诊断和建议信息275是基于读取存储器内ELF区段和库细节来生成的,并且可以包括动态地访问的符号、运行时实际存储器使用情况和其他相关运行时信息。
第二组诊断和建议信息可以通过网络280(例如,互联网)来接收,并且所生成的信息被提供给例如诊断和建议数据库240。
然后,诊断和建议数据库240中的所存储的信息可供开发者用于应用的基于诊断和建议的重新编译250。
图3A示出了根据一些实施例的基于运行时分析器和建议器的开发工作流。如图2所示的基于运行时分析器和建议器的开发工作流210可以包括用户应用开发320,其涉及在Android NDK(Native Development Kit,原生开发工具包)中开发用于用户操作的Android应用以及构建Android堆栈330,如在Android构建系统中执行的。
用户应用开发320可以包括静态链接操作324(以加载静态库)和来自Android设备操作321的动态链接操作322(以加载动态库)。在一些实施例中,用户应用开发还包括在ELF中的RTA信息326,该RTA信息是传统上不可用于应用开发的信息。Android堆栈的构建还包括静态链接操作334和来自Android设备操作331的动态链接操作332。
在一些实施例中,来自用户应用开发320和Android堆栈的构建330的输出由运行时分析器和建议器工具350来接收,该运行时分析器和建议器工具350生成第一组诊断和建议信息215,如图2所示。
图3B示出了根据一些实施例的由智能运行时分析器和建议器系统访问的运行时层元素。在一些实施例中,运行时分析器和建议器工具350用于访问Android运行时层360的可执行和可链接格式(ELF)362。所访问的ELF的元素可以包括但不限于:
重新定位信息363;
符号属性和引用364;
分段和区段特性365;
动态分段标签366;以及
其他运行时数据367。
图3C示出了根据一些实施例的基于诊断和建议的重新编译。基于诊断和建议的重新编译250至少部分地基于来自诊断和建议数据库240的数据,如图2所示。
在一些实施例中,重新编译250可以包括如由诊断和建议信息建议的改变源代码或添加运行时选项352,该信息可以包括通过分析在Android运行时层的ELF部分中的内部运行时信息而生成的第一组诊断和建议信息以及在相关应用的用户操作中开发的第二组诊断和建议信息两者。基于诊断和建议的重新编译250的操作允许利用Android运行时层中的内部运行时信息的处理来生成经优化的应用354并且生成经优化的Android堆栈356。
图4是根据一些示例的通过运行时分析器和建议器应用的诊断收集的图示。通过运行时分析器和建议器应用的操作的诊断收集270,如图2所示,包括守护进程576运行时分析器和建议器应用的操作,以在用户系统上的操作期间在应用进程地址空间中从一个或多个应用(示出为应用-1572和应用-2 574)收集诊断信息。
在一些实施例中,数据的收集可以是开发者选项,并且还可以仅在用户已选择加入数据收集过程的情况下发生。在一些实施例中,具有多于一个合格应用的用户可以选择选择加入数据收集过程的一个或多个应用,例如用户选择应用-1 572和应用-2 574中的任一者或两者,如图4中所示。运行时分析器和建议器应用的操作270用于为应用-1 572和应用-2 574中的任一者或两者来生成第二组诊断和建议信息275,其被称为动态诊断和建议信息。
图5是根据一些实施例的由运行时分析器和建议器系统生成的诊断和建议信息的图示。如图5所示,可以由运行时分析器和建议器系统识别的可能的结果或问题可以包括但不限于以下内容:
(a)大量动态符号的检测。
(b)过度共享库和相关联的符号。
(c)可以使缓存性能降级的目标文件的顺序。
(d)使用单个API或数据变量,导致过度重新定位。
(e)区段对准偏移的检测。
(f)不正确的数据类型和不正确的引用。
在每种情况下,运行时分析器和建议器系统用于提供识别检测到的问题的诊断消息,并且提供建议信息以帮助开发者解决所识别的问题。
图6是图示出根据一些实施例的用于在应用开发中提供诊断和建议信息的过程的流程图。在诊断和建议过程600中,在用于诊断和建议分析的平台处接收应用(例如,Android应用)的代码605。在分析中,运行应用610,并且访问应用的运行时层数据615。在一些实施例中,基于运行时层数据来生成静态诊断和建议信息620。所生成的静态诊断和建议信息然后可以被存储在诊断和建议数据库中625。
在一些实施例中,过程600还包括从守护进程在一个或多个用户系统上的操作来接收应用的动态运行时信息630。基于所接收的动态运行时信息来生成动态诊断和建议信息635。所生成的动态诊断和建议信息然后可以被存储在诊断和建议数据库中640。
在一些实施例中,存储在诊断和建议数据库中的所存储的诊断和建议信息可以对应用开发者可用645,从而实现对应用和软件堆栈的开发和改进。提供给开发者的信息可以包括但不限于图5所示的诊断和建议信息。
图6中所示的流程图可以包括用于由处理器电路执行的程序的机器可读指令。程序可以体现在存储在一个或多个非暂态计算机可读存储介质上的软件中,非暂态计算机可读存储介质可以为例如与位于一个或多个硬件设备中的处理器电路相关联的CD(致密盘)或DVD(数字视频盘)、硬盘驱动器(HDD)、固态驱动器(SSD)、易失性存储器(例如,任何类型的随机存取存储器(RAM)等)、或非易失性存储器(例如,闪存、HDD(硬盘驱动器)等)。程序或其部分可以可替代地由除了处理器电路之外的一个或多个硬件设备来执行、和/或体现在固件或专用硬件中。机器可读指令可以分布在多个硬件设备上和/或由两个或更多个硬件设备(例如,服务器和客户端硬件设备)来执行。例如,客户端硬件设备可以由端点客户端硬件设备(例如,与用户相关联的硬件设备)或中间客户端硬件设备(例如,可以促进服务器和端点客户端硬件设备之间的通信的无线电接入网络(RAN)网关)来实现。类似地,非暂态计算机可读存储介质可以包括位于一个或多个硬件设备中的一个或多个介质。尽管参考图6中所示的流程图描述了示例过程,但是可以替换地使用许多其他实现方法。例如,可以改变框的执行顺序,和/或可以改变、消除或组合所描述的一些框。除此之外或作为另外一种选择,可以通过一个或多个被构造为在不执行软件或固件的情况下执行对应的操作的硬件电路(例如,处理器电路、分立和/或集成的模拟和/或数字电路、FPGA(现场可编程门阵列)、ASIC(专用集成电路)、比较器、运算放大器(op-amp)、逻辑电路等)来实现任何或全部框。处理器电路可以分布在单个机器中的一个或多个硬件设备(例如,单核心处理器(例如,单核心中央处理单元(CPU))、多核心处理器(例如,多核心CPU)等)、跨服务器机架的多个服务器分布的多个处理器、跨一个或多个服务器机架分布的多个处理器、位于同一封装件(例如,同一集成电路(IC)封装件或两个或更多个单独的外壳等)中的CPU和/或FPGA的不同网络位置和/或本地。
本文所描述的机器可读指令可以以压缩格式、加密格式、分片格式、编译格式、可执行格式、封装格式等中的一者或多者来存储。如本文中所描述的机器可读指令可以被存储为可以用于创建、制造和/或产生机器可执行指令的数据或数据结构(例如,作为指令、代码、代码的表示等的部分)。例如,机器可读指令可以被分片并存储在位于网络或网络集合的相同或不同位置(例如,在云中、在边缘设备等中)的一个或多个存储设备和/或计算设备(例如,服务器)上。机器可读指令可以要求安装、修改、适配、更新、组合、补充、配置、解密、解压缩、解包、分配、重新指派、编译等中的一个或多个,以便使它们由计算设备和/或其他机器直接可读、可解译和/或可执行。例如,机器可读指令可以存储在多个部分中,这些部分被单独地压缩、加密和/或存储在单独的计算设备上,其中,这些部分在解密、解压缩和/或组合时形成一组机器可执行指令,这些机器可执行指令实现可以一起形成诸如本文中描述的程序的一个或多个操作。
在另一示例中,机器可读指令可以以它们可被处理器电路读取,但需要添加库(例如,动态链接库(DLL))、软件开发工具包(SDK)、应用编程接口(API)等的状态来存储,以便在特定计算设备或其他设备上执行机器可读指令。在另一示例中,机器可读指令可能需要在机器可读指令和/或相应(一个或多个)程序可以全部或部分执行之前被配置(例如,存储的设置、数据输入、记录的网络地址等)。因此,如本文中所使用的机器可读介质可以包括机器可读指令和/或(一个或多个)程序,而不管机器可读指令和/或(一个或多个)程序在被存储或以其他方式在休息或在运送时的特定格式或状态如何。
图7示出了根据一些实施例的用于包括智能运行时分析和建议操作的操作的示例性计算架构的实施例。在如上所述的各种实施例中,计算架构700可以包括或实现为电子设备的一部分。
在一些实施例中,计算架构700可以表示例如实现上述操作环境的一个或多个组件的计算机系统。计算架构700可以用于提供智能运行时分析和建议操作,诸如图1-图6中所描述的。
如在本申请中使用的,术语“系统”和“组件”和“模块”旨在表示计算机相关实体,硬件、硬件和软件的组合、软件、或执行中的软件,其示例由示例性计算架构700来提供。例如,组件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器或固态驱动器(SSD)、(光和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行线程、程序、和/或计算机。作为说明,在服务器上运行的应用和服务器两者都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个计算机上和/或分布在两个或更多个计算机之间。此外,组件可以通过不同类型的通信介质彼此通信地耦合以协调操作。协调可能涉及单向或双向的信息交换。例如,组件可以以在通信介质上传送的信号的形式来传送信息。该信息可以被实现为分配给不同信号线的信号。在这样的分配中,每个消息是信号。然而,其他实施例可以替代地采用数据消息。这样的数据消息可以在不同连接上发送。示例性连接包括并行接口、串行接口和总线接口。
计算架构700包括不同公共计算元件,例如一个或多个处理器、多核心处理器、协处理器、存储器单元、芯片组、控制器、外围设备、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(I/O)组件、电源等。然而,实施例不限于由计算架构700来实现。
如图7所示,计算架构700包括一个或多个处理器702和一个或多个图形处理器708,并且可以是单处理器桌面系统、多处理器工作站系统、或具有大量处理器702或处理器核心707的服务器系统。在一个实施例中,系统700是结合在用于移动、手持或嵌入式设备中的片上系统(SoC或SOC)集成电路内的处理平台。
系统700的实施例可以包括基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台)、移动游戏控制台、手持式游戏控制台、或在线游戏控制台或被结合在其中。在一些实施例中,系统700是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统700还可以包括可穿戴设备(例如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备)、与其耦合或集成在其内。在一些实施例中,数据处理系统700是具有一个或多个处理器702和由一个或多个图形处理器708生成的图形界面的电视或机顶盒设备。
在一些实施例中,一个或多个处理器702各自包括用于处理指令的一个或多个处理器核心707,这些指令在被执行时执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核心707中的每一个被配置为处理特定指令集709。在一些实施例中,指令集709可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核心707可以各自处理不同的指令集709,其可以包括用于促进其他指令集的仿真的指令。处理器核心707还可以包括其他处理设备,例如数字信号处理器(DSP)。
在一些实施例中,处理器702包括缓存存储器704。取决于架构,处理器702可以具有单个内部缓存或多级内部缓存。在一些实施例中,缓存存储器704在处理器702的不同组件之间共享。在一些实施例中,处理器702还使用外部缓存(例如,第3级(L3)缓存或最后一级缓存(LLC))(未示出),其可以使用已知的缓存一致性技术在处理器核心707之间共享。寄存器堆706附加地包括在处理器702中,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器702的设计。
在一些实施例中,一个或多个处理器702与一个或多个接口总线710耦合,以在处理器702和系统中的其他组件之间传输通信信号,例如地址、数据或控制信号。在一个实施例中,接口总线710可以是处理器总线,例如直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围组件互连总线(例如,PCI、PCIExpress)、存储器总线或其他类型的接口总线。在一个实施例中,(一个或多个)处理器702包括集成存储器控制器716和平台控制器中枢730。存储器控制器716促进存储器设备和系统700的其他组件之间的通信,而平台控制器中枢(PCH)730经由本地I/O总线提供到I/O设备的连接。
存储器设备720可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、诸如闪存设备或相变存储器设备之类的非易失性存储器设备、或一些其他具有合适的性能以充当进程存储器的存储器设备。存储器设备720还可以包括用于存储固件的非易失性存储器元件。在一个实施例中,存储器设备720可以作为系统700的系统存储器进行操作,以存储当一个或多个处理器702执行应用或进程时使用的数据722和指令721。存储器控制器中枢716还与可选的外部图形处理器712耦合,该外部图形处理器712可以与处理器702中的一个或多个图形处理器708进行通信以执行图形和媒体操作。在一些实施例中,显示设备711可以连接到(一个或多个)处理器702。显示设备711可以是如在移动电子设备或膝上型设备中的内部显示设备、或经由显示接口(例如,DisplayPort等)附接的外部显示设备中的一个或多个。在一个实施例中,显示设备711可以是头戴式显示器(HMD),例如用于虚拟现实(VR)应用或增强现实(AR)应用的立体显示设备。
在一些实施例中,平台控制器中枢730使得外围设备能够经由高速I/O总线连接到存储器设备720和处理器702。I/O外围设备包括但不限于音频控制器746、网络控制器734、固件接口728、无线收发器726、触摸传感器725、数据存储设备724(例如,硬盘驱动器、闪存等)。数据存储设备724可以经由存储接口(例如,SATA(串行高级技术附件))或经由外围总线(例如,外围组件互连总线(例如,PCI、PCI Express))连接。触摸传感器725可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器726可以是Wi-Fi收发器、蓝牙收发器、或诸如3G、4G、长期演进(LTE)、或5G收发器之类的移动网络收发器。固件接口728使得能够与系统固件进行通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器734可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线710耦合。在一个实施例中,音频控制器746是多通道高清音频控制器。在一个实施例中,系统700包括用于将传统(例如,个人系统2(PS/2))设备耦合到系统的可选传统I/O控制器740。平台控制器中枢730还可以连接到一个或多个通用串行总线(USB)控制器742,USB控制器742连接输入设备,例如,键盘和鼠标组合743、摄像头744或其他USB输入设备。
图8是根据一些实施例的被构造为执行机器可读指令或操作的示例处理器平台的框图。如图所示,处理器平台800可以是例如服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话或平板电脑)、互联网电器、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏控制台、个人视频记录器、机顶盒、头戴式耳机(例如,增强现实(AR)头戴式耳机、虚拟现实(VR)头戴式耳机等)或其他可穿戴设备、或任何其他类型的计算设备。
所示示例的处理器平台800包括处理器电路812。所示示例的处理器电路812是硬件。例如,处理器电路812可以由来自任何期望的系列或制造商的一个或多个集成电路、逻辑电路、FPGA、微处理器、CPU、GPU(图形处理单元)、DSP、和/或微控制器来实现。处理器电路812可以由一个或多个基于半导体(例如,基于硅)的设备来实现。
所示示例的处理器电路812包括本地存储器813(例如,缓存、寄存器等)。所示示例的处理器电路812通过总线818与包括易失性存储器814和非易失性存储器816的主存储器进行通信。易失性存储器814可以由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、动态随机存取存储器、和/或任何其他类型的RAM设备来实现。非易失性存储器816可以由闪存和/或任何其他期望类型的存储器设备来实现。由存储器控制器817来控制对所示示例的主存储器814、816的访问。
所示示例的处理器平台800还包括接口电路820。接口电路820可以由根据任何类型的接口标准的硬件来实现,例如以太网接口、通用串行总线(USB)接口、接口、近场通信(NFC)接口、PCI接口、和/或PCIe接口。
在所示示例中,一个或多个输入设备822连接到接口电路820。(一个或多个)输入设备822允许用户将数据和/或命令输入到处理器电路812中。(一个或多个)输入设备822可以由例如音频传感器、麦克风、摄像头(静态或视频)、键盘、按钮、鼠标、触摸屏、跟踪板、跟踪球、等点设备(isopoint device)和/或语音识别系统来实现。
一个或多个输出设备824也连接到所示示例的接口电路820。输出设备824可以例如由显示设备(例如,发光二极管(LED)、有机发光二极管(OLED)、液晶显示器(LCD)、阴极射线管(CRT)显示器、原位切换(IPS)显示器、触摸屏等)、触感输出设备、打印机和/或扬声器来实现。因此,所示示例的接口电路820通常包括图形驱动卡、图形驱动芯片、和/或诸如GPU之类的图形处理器电路。
所示示例的接口电路820还包括诸如发射器、接收器、收发器、调制解调器、住宅网关、无线接入点和/或网络接口之类的通信设备,以促进通过网络835与外部机器(例如,任何种类的计算设备)的数据交换。通信可以通过例如以太网连接、数字订户线路(DSL)连接、电话线连接、同轴电缆系统、卫星系统、现场无线系统、蜂窝电话系统、光学连接等。
所示示例的处理器平台800还包括用于存储软件和/或数据的一个或多个大容量存储设备828。这种大容量存储设备828的示例包括磁存储设备、光存储设备、软盘驱动器、HDD、CD、蓝光盘驱动器、独立磁盘冗余阵列(RAID)系统、诸如闪存设备之类的固态存储设备、以及DVD驱动器。
可以由图6的机器可读指令实现的机器可执行指令830可以存储在大容量存储设备828中、在易失性存储器814中、在非易失性存储器816中、和/或在诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
图9是处理器电路的示例实现方式的框图。在该示例中,处理器电路由微处理器900实现。例如,微处理器900可以实现诸如CPU、DSP、GPU、XPU等之类的多核心硬件电路。虽然本示例的微处理器900可以包括任何数量的示例核心902(例如,1个核心),但是其是包括N个核心的多核心半导体器件。微处理器900的核心902可以独立地操作或者可以协作以执行机器可读指令。例如,与固件程序、嵌入式软件程序、或软件程序相对应的机器代码可以由核心902中的一个核心来执行或可以由核心902中的多个核心在相同或不同时间处执行。在一些示例中,与固件程序、嵌入式软件程序、或软件程序相对应的机器代码被分裂成线程并且由核心902中的两者或两者以上并行地执行。软件程序可以对应于由图6的流程图表示的机器可读指令和/或操作的部分或全部。
核心902可以通过示例总线904通信。在一些示例中,总线904可以实现通信总线以实现与核心902中的一个(多个)核心相关联的通信。例如,总线904可以实现内部集成电路(I2C)总线、串行外围接口(SPI)总线、PCI总线或PCIe总线中的至少一个。另外或替代地,总线904可以实现任何其他类型的计算总线或电气总线。核心902可以通过示例接口电路906从一个或多个外部设备获得数据、指令和/或信号。核心902可以通过接口电路906来输出数据、指令和/或信号到一个或多个外部设备。尽管此示例的核心902包括示例本地存储器920(例如,可以被分割成L1数据缓存和L1指令缓存的第1级(L1)缓存),但是微处理器900还包括可以由核心(例如,第2级(L2)缓存)共享以用于对数据和/或指令进行高速访问的示例共享存储器910。可以通过向共享存储器910写入和/或从共享存储器910读取来传送(例如,共享)数据和/或指令。每个核心902的本地存储器920和共享存储器910可以是包括多级缓存存储器和主存储器的存储设备的层次结构的一部分。通常,层次结构中的较高级别的存储器表现出较低的访问时间并且具有比较低级别的存储器更小的存储容量。缓存层次结构的不同级别的改变由缓存一致性策略来管理(例如,协调)。
每个核心902可以被称为CPU、DSP、GPU等或任何其他类型的硬件电路。每个核心902包括控制单元电路914、算术和逻辑(AL)电路(有时被称为ALU)916、多个寄存器918、L1缓存920和示例总线922。可以存在其他结构。例如,每个核心902可以包括向量单元电路、单指令多数据(SIMD)单元电路、加载/存储单元(LSU)电路、分支/跳转单元电路、浮点单元(FPU)电路等。控制单元电路914包括被构造为控制(例如,协调)对应核心902内的数据移动的基于半导体的电路。AL电路916包括被构造为对相应核心902内的数据执行一个或多个数学和/或逻辑操作的基于半导体的电路。一些示例的AL电路916执行基于整数的操作。在其他示例中,AL电路916还执行浮点操作。在其他示例中,AL电路916可以包括执行基于整数的操作的第一AL电路和执行浮点操作的第二AL电路。在一些示例中,AL电路916可以被称为算术逻辑单元(ALU)。寄存器918是用于存储数据和/或指令(例如,由对应核心902的AL电路916执行的操作中的一个或多个操作的结果)的基于半导体的结构。例如,寄存器918可以包括(一个或多个)向量寄存器、(一个或多个)SIMD寄存器、(一个或多个)通用寄存器、(一个或多个)标志寄存器、(一个或多个)区段寄存器、(一个或多个)机器特定寄存器、(一个或多个)指令指针寄存器、(一个或多个)控制寄存器、(一个或多个)调试寄存器、(一个或多个)存储器管理寄存器、(一个或多个)机器检查寄存器等。寄存器918可以布置在如图9所示的库中。替代地,寄存器918可以以任何其他布置、格式或结构来组织,包括分布在整个核心902中以缩短访问时间。总线920可以实现12C总线、SPI总线、PCI总线或PCIe总线中的至少一个。
每个核心902和/或更一般地,微处理器900可以包括上文示出和描述的那些附加和/或替代结构。例如,可以存在一个或多个时钟电路、一个或多个电源、一个或多个电源门、一个或多个缓存归属代理(cache home agent,CHA)、一个或多个聚合/公共网格站(CMS)、一个或多个移位器(例如,(一个或多个)桶式移位器)和/或其他电路。微处理器900是半导体器件,其被构造为包括互连以在一个或多个封装件中包含的一个或多个集成电路(IC)中实现上述结构的许多晶体管。处理器电路可以包括一个或多个加速器和/或与一个或多个加速器协作。在一些示例中,加速器由逻辑电路来实现以比由通用处理器能够完成的更快速和/或有效地执行某些任务。加速器的示例包括ASIC和FPGA,例如本文所讨论的那些。GPU或其他可编程设备还可以是加速器。加速器可以在处理器电路上、在与处理器电路相同的芯片封装件中、和/或在与处理器电路分离的一个或多个封装件中。
图10是图示出示例软件分发平台的框图。示例软件分发平台1005可以由能够存储和将软件传输至其他计算设备的任何计算机服务器、数据设施、云服务等来实现。第三方可以是拥有和/或操作软件分发平台1005的实体的客户。例如,拥有和/或操作软件分发平台1005的实体可以是软件的开发者、销售者和/或许可者。第三方可以是购买和/或许可软件以供使用和/或重新销售和/或子许可的消费者、用户、零售商、OEM(原始设备制造商)等。在所示示例中,软件分发平台1005包括一个或多个服务器和一个或多个存储设备。存储设备存储机器可读指令1030。
示例软件分发平台1005的一个或多个服务器与网络1010进行通信,网络1010可以对应于互联网或其他网络中的任何一个或多个。在一些示例中,一个或多个服务器响应于将软件作为商业交易的一部分传输到请求方的请求。对软件的递送、销售、和/或许可的支付可以由软件分发平台的一个或多个服务器和/或由第三方支付实体来处理。服务器使得购买者和/或许可者能够将机器可读指令1030从软件分发平台1005下载到处理器平台1020。在一些示例中,软件分发平台1005的一个或多个服务器周期性地提供、传输、和/或强制对软件进行更新以确保改进、补丁、更新等分布并应用于终端用户设备处的软件。
以下示例涉及某些实施例:
在示例1中,一种方法包括:在平台处接收应用的代码;运行所述应用;访问所述应用的运行时层数据;基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
在示例2中,所述应用是Android应用。
在示例3中,该方法还包括:向所述应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
在示例4中,该方法还包括:将所述运行时层数据与其他运行时数据进行组合。
在示例5中,访问所述应用的运行时层数据包括:访问用于开发所述应用的数据和用于构建软件堆栈的数据。
在示例6中,所述应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
在示例7中,所述守护进程对于所述应用的用户是可选操作。
在示例8中,所述一个或多个用户系统是移动设备。
在示例9中,一种包括指令的非暂态计算机可读存储介质,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行以下操作:在平台处接收应用的代码;运行所述应用;访问所述应用的运行时层数据;基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
在示例10中,所述应用是Android应用。
在示例11中,所述指令还包括当由所述至少一个处理器执行时使得所述至少一个处理器执行以下操作的指令:向所述应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
在示例12中,访问所述应用的运行时层数据包括:访问用于开发所述应用的数据和用于构建软件堆栈的数据。
在示例13中,所述应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
在示例14中,所述守护进程对于所述应用的用户是可选操作。
在示例15中,一种装置包括:一个或多个处理器,包括处理器电路;计算机存储器设备,用于存储计算机指令;以及存储设备,用于存储包括诊断和建议数据库的数据,其中,所述一个或多个处理器用于:在平台处接收Android应用的代码;运行所述Android应用;访问所述Android应用的Android运行时层数据;基于所述Android运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在所述诊断和建议数据库中;从所述Android应用在一个或多个用户系统上的操作来接收所述Android应用的动态运行时信息;以及基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
在示例16中,所述一个或多个处理器进一步用于:向所述Android应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
在示例17中,访问所述Android应用的Android运行时层数据包括:访问用于开发所述Android应用的数据和用于构建Android堆栈的数据。
在示例18中,所述Android应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
在示例19中,所述守护进程对于所述Android应用的用户是可选操作。
在示例20中,所述一个或多个用户系统是移动设备。
在示例21中,一种装置包括:用于在平台处接收应用的代码的设备;用于运行所述应用的设备;用于访问所述应用的运行时层数据的设备;用于基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中的设备;用于从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息的设备;以及用于基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中的设备。
在示例22中,所述应用是Android应用。
在示例23中,所述装置还包括:用于向所述应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问的设备。
在示例24中,访问所述应用的运行时层数据包括:访问用于开发所述应用的数据和用于构建软件堆栈的数据。
在示例25中,所述应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
在示例26中,所述守护进程对于所述应用的用户是可选操作。
在以上描述中,出于解释的目的,阐述了许多具体细节以便提供对所描述的实施例的透彻理解。然而,对于本领域技术人员将显而易见的是,实施例可以在没有这些具体细节中的一些的情况下实践。在其他情况下,以框图的形式示出了众所周知的结构和设备。在所示组件之间可以存在中间结构。本文中描述或说明的组件可以具有未说明或描述的额外输入或输出。
不同实施例可以包括不同过程。这些过程可以由硬件组件执行或可以在计算机程序或机器可执行指令中实现,这些计算机程序或机器可执行指令可以用于使得使用指令编程的通用或专用处理器或逻辑电路执行所述过程。或者,可以通过硬件和软件的组合来执行所述过程。
不同实施例的部分可以被提供为计算机程序产品,所述计算机程序产品可以包括具有存储在其上的计算机程序指令的计算机可读介质,这些计算机程序指令可以用于对计算机(或其他电子设备)进行编程以供一个或多个处理器执行以执行根据某些实施例的过程。计算机可读介质可以包括(但不限于)磁盘、光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁性或光学卡、闪存或适合于存储电子指令的其他类型的计算机可读介质。此外,实施例还可以作为计算机程序产品被下载,其中,程序可以从远程计算机传送到请求计算机。
许多方法以其最基本的形式被描述,但是在不脱离本实施例的基本范围的情况下,过程可以被添加到任何方法或从任何方法删除,并且信息可以被添加到任何所描述的消息或从任何所描述的消息中减去。对于本领域技术人员将显而易见的是,可以进行许多进一步的修改和调整。特定实施例不是为了限制概念而提供的,而是为了说明它。实施例的范围不由以上提供的特定示例来确定,而仅由所附权利要求来确定。
如果说元件“A”耦合至元件“B”或者与元件“B”耦合,则元件A可以直接耦合至元件B或者通过例如元件C间接耦合。当说明书或权利要求陈述组件、特征、结构、过程、或特性A“引起”组件、特征、结构、过程、或特性B时,其意味着“A”是“B”的至少部分原因,但是也可能存在有助于引起“B”的至少一个其他组件、特征、结构、过程、或特性。如果说明书指示“可以”、“可能”、或“可”包括组件、特征、结构、过程、或特性,那么不要求包括该特定组件、特征、结构、过程、或特性。如果说明书或权利要求提及“一个”或“一种”元件,这不意味着仅存在一个所描述的元件。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但不一定是所有实施例。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指代相同的实施例。应当理解,在示例性实施例的前述描述中,出于简化本公开并帮助理解不同新颖方面中的一个或多个的目的,不同特征有时被组合在单个实施例、图或其描述中。然而,本公开的该方法不应被解释为反映所要求保护的实施例需要比在每个权利要求中明确陈述的特征更多的特征的意图。相反,如所附权利要求所反映的,新颖方面在于少于单个前面公开的实施例的所有特征。因此,权利要求由此明确地结合到本说明书中,其中每个权利要求独立地作为单独的实施例。
前面的描述和附图被认为是说明性的而非限制性的。本领域技术人员将理解,在不脱离所附权利要求中阐述的特征的更宽泛的精神和范围的情况下,可以对本文描述的实施例进行不同修改和改变。
Claims (20)
1.一种方法,包括:
在平台处接收应用的代码;
运行所述应用;
访问所述应用的运行时层数据;
基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;
从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及
基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
2.根据权利要求1所述的方法,其中,所述应用是Android应用。
3.根据权利要求1所述的方法,还包括:向所述应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
4.根据权利要求1所述的方法,还包括:将所述运行时层数据与其他运行时数据进行组合。
5.根据权利要求1所述的方法,其中,访问所述应用的运行时层数据包括:访问用于开发所述应用的数据和用于构建软件堆栈的数据。
6.根据权利要求1所述的方法,其中,所述应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
7.根据权利要求6所述的方法,其中,所述守护进程对于所述应用的用户是可选操作。
8.根据权利要求1所述的方法,其中,所述一个或多个用户系统是移动设备。
9.一种包括指令的非暂态计算机可读存储介质,所述指令在由至少一个处理器执行时,使得所述至少一个处理器执行以下操作:
在平台处接收应用的代码;
运行所述应用;
访问所述应用的运行时层数据;
基于所述运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在诊断和建议数据库中;
从所述应用在一个或多个用户系统上的操作来接收所述应用的动态运行时信息;以及
基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
10.根据权利要求9所述的计算机可读存储介质,其中,所述应用是Android应用。
11.根据权利要求9所述的计算机可读存储介质,其中,所述指令还包括当由所述至少一个处理器执行时使得所述至少一个处理器执行以下操作的指令:向所述应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
12.根据权利要求9所述的计算机可读存储介质,其中,访问所述应用的运行时层数据包括:访问用于开发所述应用的数据和用于构建软件堆栈的数据。
13.根据权利要求9所述的计算机可读存储介质,其中,所述应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
14.根据权利要求13所述的计算机可读存储介质,其中,所述守护进程对于所述应用的用户是可选操作。
15.一种装置,包括:
一个或多个处理器,包括处理器电路;
计算机存储器设备,用于存储计算机指令;以及
存储设备,用于存储包括诊断和建议数据库的数据;
其中,所述一个或多个处理器用于:
在平台处接收Android应用的代码;
运行所述Android应用;
访问所述Android应用的Android运行时层数据;
基于所述Android运行时层数据来生成静态诊断和建议信息,并且将所生成的静态诊断和建议信息存储在所述诊断和建议数据库中;
从所述Android应用在一个或多个用户系统上的操作来接收所述Android应用的动态运行时信息;以及
基于所接收的动态运行时信息来生成动态诊断和建议信息,并且将所生成的动态诊断和建议信息存储在所述诊断和建议数据库中。
16.根据权利要求15所述的装置,其中,所述一个或多个处理器进一步用于:向所述Android应用的开发者提供对所述诊断和建议数据库中的所述静态诊断和建议信息以及所述动态诊断和建议信息的访问。
17.根据权利要求15所述的装置,其中,访问所述Android应用的Android运行时层数据包括:访问用于开发所述Android应用的数据和用于构建Android堆栈的数据。
18.根据权利要求15所述的装置,其中,所述Android应用的动态运行时信息由在所述一个或多个用户系统中的每个用户系统上运行的守护进程来生成。
19.根据权利要求18所述的装置,其中,所述守护进程对于所述Android应用的用户是可选操作。
20.根据权利要求15所述的装置,其中,所述一个或多个用户系统是移动设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/547,085 | 2021-12-09 | ||
US17/547,085 US20220100499A1 (en) | 2021-12-09 | 2021-12-09 | Performance enhancement for application development utilizing smart runtime analyzer and advisor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116257401A true CN116257401A (zh) | 2023-06-13 |
Family
ID=80822518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211308666.4A Pending CN116257401A (zh) | 2021-12-09 | 2022-10-25 | 利用智能运行时分析器和建议器的应用开发的性能增强 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220100499A1 (zh) |
EP (1) | EP4195035A1 (zh) |
CN (1) | CN116257401A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10423514B1 (en) * | 2013-10-28 | 2019-09-24 | Symantec Corporation | Automated classification of mobile app battery consumption using simulation |
US9558096B2 (en) * | 2014-03-21 | 2017-01-31 | Marvell World Trade Ltd. | Method and apparatus for supporting performance analysis |
US10353701B2 (en) * | 2014-09-29 | 2019-07-16 | Sap Se | Code analysis for cloud-based integrated development environments |
US11182134B2 (en) * | 2020-02-24 | 2021-11-23 | Hewlett Packard Enterprise Development Lp | Self-adjustable end-to-end stack programming |
-
2021
- 2021-12-09 US US17/547,085 patent/US20220100499A1/en active Pending
-
2022
- 2022-10-21 EP EP22203132.0A patent/EP4195035A1/en active Pending
- 2022-10-25 CN CN202211308666.4A patent/CN116257401A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220100499A1 (en) | 2022-03-31 |
EP4195035A1 (en) | 2023-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8935683B2 (en) | Inline function linking | |
US20190095796A1 (en) | Methods and arrangements to determine physical resource assignments | |
US20230168902A1 (en) | Bootstrapping Profile-Guided Compilation and Verification | |
US20160371081A1 (en) | Dynamic computational acceleration using a heterogeneous hardware infrastructure | |
US9817643B2 (en) | Incremental interprocedural dataflow analysis during compilation | |
US20130191816A1 (en) | Optimizing texture commands for graphics processing unit | |
US20220100498A1 (en) | Implementation of object versioning and consistency at scale | |
Hall et al. | Performance optimization and tuning techniques for IBM Power Systems processors including IBM POWER8 | |
WO2023107789A1 (en) | Deterministic replay of a multi-threaded trace on a multi-threaded processor | |
US20120284701A1 (en) | Efficient conditional flow control compilation | |
US20220107777A1 (en) | Content fidelity adjustment based on user interaction | |
US20230109752A1 (en) | Deterministic replay of a multi-threaded trace on a multi-threaded processor | |
US20220100499A1 (en) | Performance enhancement for application development utilizing smart runtime analyzer and advisor | |
US20220206591A1 (en) | Methods and apparatus for adaptive keyboard scanning | |
US20220114451A1 (en) | Methods and apparatus for data enhanced automated model generation | |
US20210397530A1 (en) | Methods and apparatus to transmit central processing unit performance information to an operating system | |
CN115525307A (zh) | 用于在计算平台上支持制造后固件扩展的方法和装置 | |
US10949209B2 (en) | Techniques for scheduling instructions in compiling source code | |
Cohen et al. | Android Application Development for the Intel Platform | |
US20220222177A1 (en) | Systems, apparatus, articles of manufacture, and methods for improved data transfer for heterogeneous programs | |
US20230136365A1 (en) | Methods and apparatus to allocate accelerator usage | |
JP2019204348A (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
Lordan et al. | Enabling GPU support for the COMPSs-Mobile framework | |
US20240134707A1 (en) | Apparatus, articles of manufacture, and methods for managing processing units | |
WO2023097426A1 (en) | Methods and apparatus to improve sleep state demotion with hardware power monitor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |