CN112041818A - 基于平台水平基准化来调整应用性能的系统 - Google Patents
基于平台水平基准化来调整应用性能的系统 Download PDFInfo
- Publication number
- CN112041818A CN112041818A CN201880092343.1A CN201880092343A CN112041818A CN 112041818 A CN112041818 A CN 112041818A CN 201880092343 A CN201880092343 A CN 201880092343A CN 112041818 A CN112041818 A CN 112041818A
- Authority
- CN
- China
- Prior art keywords
- application
- performance
- applications
- computing
- computing system
- 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
- 230000008439 repair process Effects 0.000 claims description 69
- 238000000034 method Methods 0.000 claims description 50
- 230000004044 response Effects 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 description 30
- 238000012937 correction Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 9
- 230000006872 improvement Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000009877 rendering Methods 0.000 description 6
- 238000005067 remediation Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011982 device technology Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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/3409—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 performance assessment
- G06F11/3428—Benchmarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/32—Monitoring with visual or acoustical indication of the functioning of the machine
- G06F11/324—Display of status information
-
- 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/3452—Performance evaluation by statistical analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
描述一种系统,所述系统获得在第一计算设备组处执行第一应用期间收集的第一性能数据,基于第一性能数据,确定用于量化第一应用的性能的至少一个度量,以及将至少一个度量与对应基准进行比较,所述对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出。一个或多个第二应用中的每个与第一应用不同。所述系统确定至少一个度量是否在对应基准的阈值量之内,并至少部分地基于至少一个度量不在对应基准的阈值量之内,进一步确定对第一应用的修复,以及输出对修复的指示,用于在开发者设备上呈现。
Description
背景技术
在已接收终端用户的明确许可以收集和利用在执行应用期间收集的性能数据之后,软件开发者可以分析性能数据(例如,有关应用稳定性、渲染时间、电池使用的数据)以调试问题或者以其他方式对应用进行改善。例如,开发者可以发布应用更新,其修复根据从执行该应用的设备子集收集的性能数据识别的定期崩溃(crash)。
有时候,问题可能无法从性能数据中看出来,但仍然可以被用户观察到或通过其他方式检测到。因此,应用开发者可能不知道其应用存在性能问题。有时候,问题可能归因于硬件组件、操作系统或计算平台或者在应用开发者控制范围之外维护的计算服务中的缺陷。由于这些缺陷,不同的软件开发者可能重复工作以解决在其相应的应用执行期间出现的类似问题。有时候,即使应用开发者意识到其应用的性能问题,应用开发者可能缺乏解决问题的知识。结果,应用的性能会下降,从而可能导致终端用户的沮丧。
发明内容
本发明的总体技术涉及使得计算系统能够相对于在相似或对应计算平台(或操作系统)上执行的其他应用的性能识别应用性能的异常。计算系统可以推荐或自动实施解决所识别的异常的解决方案,从而改善应用在计算平台上的相对性能。作为示例,计算系统可以获得与在操作对应(或至少相似)计算平台的计算设备上执行的多个不同应用相关联的应用性能数据(例如,有关应用稳定性、渲染时间、电池使用、许可拒绝、启动时间、无线电扫描以及指示异常或性能度量的其他信息的数据)。计算系统可通过根据性能数据得出每个应用的一个或多个性能度量,将每个应用的性能数据标准化。计算系统可将特定应用的性能度量与计算系统建立的对应性能基准进行比较。将特定应用的性能度量与建立的性能度量进行比较可以指示应用相对于在相同或相似计算平台上执行的其他不同应用的性能。计算系统可以确定特定应用可以改善性能度量以达到或超过性能基准的一个或多个方式。计算系统可以输出推荐的改善,软件开发者可以选择性实施(例如,在补丁程序或软件更新中),或者在一些情况下,计算系统可以自动(即,无需用户干预)重新配置应用可执行文件或其他应用资源,以自动实施改善。
通过建立基准,然后根据基准评估在计算平台上执行的应用的性能度量,示例性计算系统可以在开发者甚至考虑寻求性能改善之前就识别应用的性能问题。示例性计算系统可以输出有关性能差距的信息,以教导开发者了解他或她的应用的性能与平台上可用的其他应用相比如何。开发者无需知道可以改善哪些领域,或者甚至如何改善这些领域。替代地,示例性计算系统可以自动识别改善的领域,并建议或自动实施修复,以将应用的性能改善为与在计算平台上执行的其他应用的性能更加相符合。如果问题可以归因于硬件组件、操作系统或计算平台或者在应用开发者控制之外维护的计算服务中的缺陷,则示例性计算系统可以向开发者提供信息,该信息指示其他软件开发者怎样解决类似的问题,从而防止开发者执行不必要的工作来寻找解决方案。因此,示例性计算系统可以使得在特定计算平台上执行的应用更好地执行,更有效地操作,并且可能导致在计算平台上的用户体验更加一致。因此,示例性计算系统可将用户可能否则从与在计算平台上将慢速或者执行不佳的应用交互而经历的沮丧最小化。
在整个本公开中,描述以下示例,其中仅当计算设备和/或计算系统接收到来自计算设备和/或计算系统的用户的明确许可时,计算设备和/或计算系统才可以分析信息(例如,应用性能数据等)。例如,在以下所述情况下,其中计算设备和/或计算系统可以收集有关在执行相似或对应计算平台的计算设备上执行的应用的性能的信息,可以为单独的用户提供这样的机会:提供输入以控制是否计算设备和/或计算系统的程序或特征(例如,开发者服务模块)可以收集和利用该信息。此外,可以向单独的用户提供这样的机会:控制程序或特征通过信息能够做什么和不能做什么。此外,所收集的信息在通过计算设备和/或计算系统传送、存储或以其他方式使用之前,可通过一个或多个方式进行预处理,从而去除个人可识别信息。例如,在示例性计算系统存储与在计算设备执行的应用相关联的性能数据之前,示例性计算系统可以对性能数据进行预处理,以确保去除嵌入性能数据中的任何用户识别信息或设备识别信息。因此,用户可以控制是否收集有关用户和用户设备的信息,以及如果收集了这些信息,计算设备和/或计算系统将如何使用这些信息。
在一个示例中,描述一种方法,该方法包括:通过计算系统获得在第一计算设备组处执行第一应用期间收集的第一性能数据,基于第一性能数据,确定用于量化第一应用的性能的至少一个度量,以及通过计算系统将至少一个度量与对应基准进行比较,该对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出,一个或多个第二应用中的每个与第一应用不同。所述方法还包括确定至少一个度量是否在对应基准的阈值量之内,至少部分地基于确定至少一个度量不在对应基准的阈值量之内,确定对第一应用的修复,以及通过计算系统输出对第一应用的修复的指示,用于在开发者设备上呈现。
在另一个示例中,描述一种计算机可读存储介质,该计算机可读存储介质包括指令,该指令在被执行时使得至少一个处理器获得在第一计算设备组处执行第一应用期间收集的第一性能数据,基于第一性能数据,确定用于量化第一应用的性能的至少一个度量,以及将至少一个度量与对应基准进行比较,该对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出,一个或多个第二应用中的每个与第一应用不同。指令在被执行时还使得至少一个处理器确定至少一个度量是否在对应基准的阈值量之内,至少部分地基于确定至少一个度量不在对应基准的阈值量之内,确定对第一应用的修复,以及输出对第一应用的修复的指示,用于在开发者设备上呈现。
在另一个示例中,描述一种计算系统,该计算系统包括至少一个处理器,所述至少一个处理器被配置为获得在第一计算设备组处执行第一应用期间收集的第一性能数据,基于第一性能数据,确定用于量化第一应用的性能的至少一个度量,以及将至少一个度量与对应基准进行比较,该对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出,一个或多个第二应用中的每个与第一应用不同。所述至少一个处理器还被配置为确定至少一个度量是否在对应基准的阈值量之内,至少部分地基于确定至少一个度量不在对应基准的阈值量之内,确定对第一应用的修复,以及输出对第一应用的修复的指示,用于在开发者设备上呈现。
在另一个示例中,描述一种系统,该系统包括:用于获得在第一计算设备组处执行第一应用期间收集的第一性能数据的装置,用于基于第一性能数据来确定用于量化第一应用的性能的至少一个度量的装置,以及用于将至少一个度量与对应基准进行比较的装置,该对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出,一个或多个第二应用中的每个与第一应用不同。系统还包括用于确定至少一个度量是否在相应基准的阈值量之内的装置,用于至少部分地基于确定至少一个度量不在相应基准的阈值量之内来确定对第一应用的修复的装置,以及用于输出对第一应用的修复的指示以用于在开发者设备上呈现的装置。
在另一个示例中,描述一种方法,该方法包括:由计算设备将在第一应用的执行期间收集的第一性能数据输出到计算系统;由计算设备从计算系统接收执行第一应用的修复的指令,所述修复相对于在计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;以及由计算设备执行指令以执行第一应用的修复。
在另一个示例中,描述一种计算机可读存储介质,该计算机可读存储介质包括指令,该指令在被执行时使得至少一个处理器将在第一应用的执行期间收集的第一性能数据输出到计算系统;从计算系统接收执行第一应用的修复的指令,所述修复相对于在计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;以及执行指令以执行第一应用的修复。
在另一个示例中,描述一种计算设备,该计算设备包括至少一个处理器,该至少一个处理器被配置为将在第一应用的执行期间收集的第一性能数据输出到计算系统;从计算系统接收执行第一应用的修复的指令,所述修复相对于在计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;以及执行指令以执行第一应用的修复。
在另一个示例中,描述一种系统,该系统包括用于将在第一应用的执行期间收集的第一性能数据输出到计算系统的装置;用于从计算系统接收执行第一应用的修复的指令的装置,所述修复相对于在计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;以及用于执行指令以执行第一应用的修复的装置。
在另一个示例中,描述一种方法,该方法包括:由计算设备从计算系统接收对在第一计算设备组处执行的第一应用的修复的推荐,所述修复相对于在第二计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的与第一应用不同;通过计算设备接收授权第一应用的修复的用户输入;响应于向计算系统发送授权第一应用的修复的用户输入的指示,由计算设备从计算系统接收执行第一应用的修复的指令;以及由计算设备基于指令来执行第一应用的修复。
在另一个示例中,描述一种计算机可读存储介质,该计算机可读存储介质包括指令,该指令在被执行时使得至少一个处理器从计算系统接收对在第一计算设备组处执行的第一应用的修复的推荐,所述修复相对于在第二计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;接收授权第一应用的修复的用户输入;响应于向计算系统发送授权第一应用的修复的用户输入的指示,从计算系统接收执行第一应用的修复的指令;以及基于指令来执行第一应用的修复。
在另一个示例中,描述一种计算设备,该计算设备包括至少一个处理器,该至少一个处理器被配置为从计算系统接收对在第一计算设备组处执行的第一应用的修复的推荐,所述修复相对于在第二计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;接收授权第一应用的修复的用户输入;响应于向计算系统发送授权第一应用的修复的用户输入的指示,从计算系统接收执行第一应用的修复的指令;以及基于指令来执行第一应用的修复。
在另一个示例中,描述一种系统,该系统包括用于从计算系统接收对在第一计算设备组处执行的第一应用的修复的推荐的装置,所述修复相对于在第二计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,一个或多个第二应用中的每个与第一应用不同;用于接收授权第一应用的修复的用户输入的装置;响应于向计算系统发送授权第一应用的修复的用户输入的指示,用于从计算系统接收执行第一应用的修复的指令的装置;以及用于基于指令来执行第一应用的修复的装置。
一个或多个示例的细节在附图和以下描述中给出。根据说明书和附图以及根据权利要求书,本公开的其他特征、目的和优点将显而易见。
附图说明
图1是示出示例性计算系统的概念图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。
图2是示出示例性计算系统的方框图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。
图3是根据本公开的一个或多个方面,正在访问由示例性计算系统提供的应用性能评估服务的计算设备的显示屏的示例性屏幕截图。
图4是示出由示例性计算系统执行的示例性操作的流程图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。
具体实施方式
图1是示出示例性计算系统的概念图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。系统100包括经由网络130与计算设备110,计算设备116A-116N(统称为“计算设备116”)和计算设备118A-118N(统称为“计算设备118”)通信的计算系统160。虽然归因于系统100的操作被描述为主要由计算系统160和计算设备110、116和118执行,但是在一些示例中,系统100的操作可以由比图1所示更多或更少的计算设备和系统执行。例如,计算设备110、116和118可以是单个计算设备。
计算系统160包括开发者服务模块162和应用数据储存器164。计算设备110包括开发者客户端模块120,并且还包括被配置为输出用户接口114的用户接口组件(“UIC”)112。每个计算设备116执行应用122A的相应实例,且每个计算设备118执行应用122B的相应实例。
网络130表示用于在计算系统、服务器和计算设备之间传输数据的任何公共或专用通信网络,例如,蜂窝、Wi-Fi和/或其他类型的网络。网络130可包括一个或多个网络集线器、网络交换机、网络路由器或任何其他网络装备,它们操作地相互联接,从而提供计算系统160与计算设备110、116和118之间的信息交换。计算系统160和计算设备110、116和118可以使用任何适当的通信技术跨网络130传输和接收数据。
计算系统160和计算设备110、116和118可以使用相应的网络链路分别操作地联接到网络130。将计算系统160以及计算设备110、116和118耦合到网络130的链路可以是以太网、ATM或其他类型的网络连接,并且这样的连接可以是无线和/或有线连接。
计算系统160表示作为应用性能评估服务一部分的能够经由网络130交换信息的一个或多个计算机、大型机、服务器、刀片、云计算系统或其他类型的远程计算系统的任意组合。也就是说,计算系统160可以经由网络130接收应用性能数据并分析性能数据,以确定性能问题以及解决在计算设备116、118执行的应用的性能问题的方式。计算系统160可以输出推荐以修复任何识别的在性能数据分析过程中发现的性能问题。在一些情况下,计算系统160将推荐和关于其分析的其他信息输出到计算设备110,例如经由用户接口114随后呈现给计算设备110的开发者或其他用户。在一些示例中,计算系统160可以与计算设备116、118直接交互,以实施用于改善在计算设备116、118执行的单独的应用的性能的修复。
开发者服务模块162控制计算系统160执行特定操作,以实施计算系统160提供的应用性能评估服务。开发者服务模块162可提供计算系统160与诸如计算设备110的客户端设备之间的接口,所述客户端设备访问计算系统160提供的性能评估服务,例如,以获得有关应用性能的信息以及改善应用性能的方式。开发者服务模块162可以使用在计算系统160中驻留和/或执行的软件、硬件、固件或硬件、软件和固件的混合来执行本文所述操作。计算系统160可通过多个处理器或多个设备来执行开发者服务模块162,作为在底层硬件上执行的虚拟机,作为操作系统或计算平台的一个或多个服务,和/或作为计算系统160的计算平台的应用层的一个或多个可执行程序。
开发者服务模块162被配置为从在相似或对应计算平台上执行的不同应用收集应用性能数据。开发者服务模块162分析应用性能数据,以相对于在相似或对应执行环境中执行的其他不同应用而言确定特定应用性能中的问题。也就是说,与可能为了单个应用分析应用性能数据,以确定当应用在不同的计算体系结构、操作系统或计算平台上执行时可能出现的性能问题的其他调试或分析工具不同,开发者服务模块162替代地识别单独的应用与在相似或对应计算环境中执行的其他不同应用之间的性能差异。
开发者服务模块162在应用数据储存器164收集并存储从网络130收集的应用性能数据。可将包含在应用数据储存器164中的性能数据(例如,有关应用稳定性、渲染时间、电池使用、许可拒绝、启动时间、无线电扫描以及指示异常或性能度量的其他信息的数据)根据应用标识符(例如,名称、发布者等)、应用类别(例如,旅行、休闲、娱乐等)、应用种类(例如导航、交通、游戏等)或其他可搜索标准来组织,并且可搜索。例如,应用数据储存器164可以与在计算设备118的相应执行应用122B期间从计算设备118收集的第二性能数据分开存储在计算设备116的相应执行应用122A期间从计算设备116收集的第一性能数据。
在一些示例中,存储在应用数据储存器164中的性能数据可以用作性能的代理指示符或间接指示符。换言之,在数据储存器164收集和维护的数据可以是低水平性能细节,其本身不能提供对特定问题的深入了解,但是汇总在一起时是性能的标志。例如,无线电扫描和位置查询易于消耗大量电池电量,因此,除非必要或仅在以有限频率下完成的情况下,计算平台可能要求应用最小化执行这些功能。因此,与其他应用相比执行更多无线电扫描或位置查询的应用可能指示该应用相对于其他应用而言在电池消耗方面执行不良。开发者服务模块162可通过同时查看多种类型的性能数据来进一步确定关于“渲染性能”之类的或其他类别的性能的事物。
当收集和存储性能数据时,开发者服务模块162可以采取预防措施以确保保留用户隐私。也就是说,如果开发者服务模块162从性能数据所来自的计算设备的用户接收到明确许可,则开发者服务模块162可以仅收集、存储和分析性能数据。例如,在下面讨论的在其中开发者服务模块162可以收集关于在计算设备116、118执行的应用的性能的信息的情况下,可以向计算设备116、118的单独的用户提供这样的机会:向计算设备116、118和/或计算系统160提供输入,以控制开发者服务模块162是否可以收集和利用其信息。还可以向单独的用户提供这样的机会:控制开发者服务模块162通过信息能够做什么或者不能做什么。在将应用性能数据传送到开发者服务模块162、由开发者服务模块162存储或以其他方式使用之前,可通过一个或多个方式对其进行预处理,从而去除个人可识别信息。例如,在开发者服务模块162收集与应用122A当在计算设备116A执行时相关联的性能数据之前,计算设备116A可以对性能数据进行预处理,以确保在传送到计算系统160之前,将嵌入性能数据中的任何用户识别信息或设备识别信息去除。在其他示例中,开发者服务模块162可以在接收时以及将性能数据存储在数据储存器164之前对性能数据进行预处理。在两种情况下,用户都可以控制是否收集性能数据,以及如果收集的话,计算设备116A和计算系统160如何使用这些信息。
计算设备110表示能够经由网络130交换信息以访问计算系统160提供的性能评估服务从而获得有关应用性能的信息以及改善应用性能的方式的任何合适的计算设备或计算系统。也就是说,计算设备110可以是软件开发者或设计者工作站,其被配置为访问数据储存器164所存储的性能数据,获得开发者服务模块162所执行的分析,以及获得开发者服务模块162所生成的性能改善推荐。
开发者客户端模块120可以提供计算设备110与计算系统160所提供的服务之间的接口。例如,开发者客户端模块120可以是在计算设备110执行的独立应用,或者在一些示例中,客户端模块120可以是从在计算设备110执行的互联网浏览器访问的子例程或互联网应用。在任意情况下,开发者客户端模块120都被配置为与计算系统160交换信息,以实施性能评估服务。
开发者客户端模块120被配置为经由网络130从计算系统160接收对应用性能数据的分析结果以及由计算系统160确定的改善结果的推荐。模块120可以使用在计算设备110中驻留和/或执行的软件、硬件、固件或硬件、软件和固件的混合来执行本文所述的操作。计算设备110可通过多个处理器或多个设备来执行模块120,作为在底层硬件上执行的虚拟机,作为操作系统或计算平台的一个或多个服务,和/或作为计算设备110的计算平台的应用层的一个或多个可执行程序。
计算设备110的UIC 112可以充当计算设备110的输入和/或输出设备。可以使用各种技术来实施UIC 112。例如,UIC 112可以使用存在敏感的输入屏幕、麦克风技术、红外传感器技术或其他用于接收用户输入的输入设备技术,充当输入设备。UIC 112可以充当输出设备,其被配置为使用任何一个或多个显示设备、扬声器技术、触觉反馈技术或用于向用户输出信息的其他输出设备技术向用户呈现输出。
开发者客户端模块120可以使得UIC 112输出与计算系统160所提供的服务相关联的用户接口。如图1所示,开发者客户端模块120可以向UIC 112发送指令,使得UIC 112在UIC 112的显示屏上显示用户接口114。用户接口114可通过视觉、听觉或触觉的格式呈现从开发者服务模块162获得的信息,因此,开发者可以更好地了解特定应用的性能与在相似或对应计算平台上执行的其他应用的性能相比如何。
计算设备116、118分别表示能够在本地执行诸如应用122A和122B的应用并且还能够经由网络130与计算系统160交换有关本地执行应用的性能的信息的任何合适的计算设备或计算系统。计算设备116、118的示例包括移动电话、平板计算机、膝上型计算机、台式计算机、服务器、大型机、刀片、可穿戴设备(例如,计算机化手表等)、家庭自动化设备、助手设备、游戏机和系统、媒体播放器、电子书阅读器、电视平台、汽车导航或信息娱乐系统,或者配置为执行在计算平台上正在被开发者服务模块162分析的应用的任何其他类型的移动、非移动、可穿戴和不可穿戴计算设备。每个计算设备116、118在诸如公共操作系统的相似或对应计算平台上执行应用。
应用122A和122B表示两个不同的机器可读可执行文件,所述两个不同的机器可读可执行文件配置为在操作在计算设备116和118中的每个上的相似或相同计算平台的应用层处操作。计算设备116可以执行与应用122A在其中执行的特定计算平台相关联的指令,且计算设备118可以执行与计算设备116相同的计算平台相关联的相似指令,但是针对执行应用122B而非应用122A。
应用122A和122B的示例多到无法列出。作为一些示例,应用122A和122B可包括商业应用、开发者工具、教育应用、娱乐应用、金融应用、游戏应用、图形或设计应用、健康和健身应用、生活方式或助手应用、医疗应用、音乐应用、新闻应用、摄影、视频和其他多媒体应用、生产力应用、参考应用、社交网络应用、体育应用、旅行应用、公用事业应用、天气应用、通信应用、日历应用或任何其他类别或类型的应用。
应用122A和122B是完全不同的应用,并且可以与不同的应用开发者、生产者、版本等相关联。在一些示例中,应用122A和122B“对等”,因为它们来自相同类别或种类的应用(例如,旅行)并执行相似的功能或提供相似的特征(例如,两者都可以实现交通预订)。在其他示例中,应用122A和122B来自相同类别或种类的应用(例如旅行),但是并非“对等”,因为这两个应用可以执行不同的功能或提供不同的特征(例如,一个可以实现交通预订,而另一个可以有助于导航)。无论如何,不管应用122A和122B是否仅仅是来自相似的类别或种类,还是应用122A和122B是否对等,应用122A和122B是来自不同应用开发者、生产者等的完全不同的应用。
在操作中,在图1的示例中是应用122A的软件开发者或设计者的计算设备110的用户可能希望了解应用122A的性能与在相同或相似计算平台上执行的诸如应用122B的其他应用的性能相比如何。用户可以在显示用户接口114的UIC的位置或附近在UIC 112的存在敏感屏幕上提供输入。UIC 112可将关于输入的信息提供给开发者客户端模块120,并且响应于关于输入的信息,开发者客户端模块120可以访问开发者服务模块162提供的服务,以获得相对于在相似或对应计算平台上执行的其他应用的性能的对应用122A的性能的分析。
在从计算设备116、118的每个终端用户接收明确许可以收集和使用在执行应用122A,122B期间收集的性能数据之后,计算系统160的开发者服务模块162可以获得当计算设备116、118正在执行应用122A、122B的相应实例时由计算设备116、118所收集的性能数据。例如,当应用122A在计算设备116A执行时,应用122A可以输出指示应用122A在计算设备116A的执行环境中执行得如何的性能数据。计算设备116A可以经由网络130将性能数据发送到计算系统160,其中,开发者服务模块162可将性能数据存储于应用性能数据储存器164。计算设备116、118中的每个可以执行与计算设备116A相似的操作,以收集性能数据并将性能数据发送到计算系统160,所述性能数据指示应用122A、122B在计算设备116、118的相应执行环境中执行得如何。
开发者服务模块162可以分析应用122A和122B中的每个的性能数据,以确定应用122A和122B中的每个的一个或多个性能度量。相对于其他附图,更详细地描述性能度量背后的基础。但是通常,性能度量可以是任何定量和可测量值,它可以根据应用性能数据得出,以指示与应用的某些方面相关联的性能水平。性能度量的一些示例包括:电池统计数据(例如,消耗率等)、稳定性测量(例如,崩溃率等)、渲染度量(例如,帧渲染之间的时延等)、定时度量(例如,启动时间、从一种模式到另一种模式的转换延迟、实施意图的延迟、检索或上传信息的延迟等)、许可度量(例如,失败请求或用户拒绝的使用设备组件或用户信息的请求的频率等)。
通过定义的性能度量集合,开发者服务模块162可以建立一个或多个基准,用于评估单独的应用的性能度量;具体而言,相对于在计算平台上运行的其他应用的性能来确定应用在计算平台上的性能。换言之,开发者服务模块162可以基于一个或多个应用的性能度量来确定性能目标,其他应用应当朝着所述性能目标操作,因此与计算平台上的应用进行交互的用户不管他或她与哪个应用进行交互,都具有愉快、一致并且不令人沮丧的用户体验。
为了建立基准,开发者服务模块162可以针对每个特定度量对多个应用的性能度量进行排名,以确定执行最好的应用。在一些示例中,开发者服务模块162可以基于两个或更多个应用的度量来确定复合度量(例如,平均值、中值等),以用作评估其他应用的性能的基准。在一些示例中,开发者服务模块162可以基于两个或更多个最高排名、两个或更多个最低排名或应用度量的一些其他组合来确定复合度量,以用作评估其他应用的性能的基准。
开发者服务模块可通过将应用的性能度量与对应的基准进行比较来评估应用。例如,如果存储在数据储存器164处的性能数据指示应用122A具有在基准值的阈值内的性能度量,则开发者服务模块162可以确定应用122A没有性能问题,因为应用的性能与该特定度量有关。否则,开发者服务模块162可以确定如果应用122A具有基准值的阈值之外的性能度量,则该应用122A的确具有性能问题,因为应用122A的性能与该特定度量有关。
在图1的示例中,假定开发者服务模块162将基准建立为基于与应用122B相关联的对应度量为特定度量(例如,启动时间)。开发者服务模块162可以随后通过将应用122A的启动时间与基准进行比较来评估应用122A的启动时间。
开发者服务模块162可以确定启动时间度量是否在基准的阈值量之内。在一些示例中,阈值量可以是百分比(例如,百分之十)或值(例如,两毫秒)。在一些示例中,阈值量可以为零,且满足基准可能需要达到或超过基准性能。在一些示例中,阈值量可以是应用相对于在计算平台上执行的其他应用的百分位排名。也就是说,为了满足基准,开发者服务模块可能要求应用的性能要优于已经针对基准进行评级的其他应用的后面“x”百分位(例如,“x”是任何百分位值)。
在图1的示例中,开发者服务模块162可以确定应用122A的启动时间不满足启动时间基准,因为应用122A的启动时间(例如,平均值)超过基准值达时间的阈值量(例如,5毫秒)以上。响应于确定性能度量不在对应基准的阈值量之内,开发者服务模块可以确定对应用的修复,以改善其性能。
对应用的修复可包括对与应用相关联的源代码或配置文件的一个或多个修改。在一些示例中,对应用的修复可包括禁用应用使用的库、函数调用、软件开发工具包、应用编程接口或服务。在一些示例中,对应用的修复可包括用替代库、函数调用或服务来代替应用所利用的第一库、函数调用或服务。
例如,除了跟踪与在计算设备116、118执行的应用相关联的性能数据之外,开发者服务模块162还可以维护相对于每个特定度量的有关改善应用性能的方式的信息。在一些示例中,信息可以基于从具有形成基准的基础的度量的应用的其他开发者获得的反馈。在一些示例中,信息可以基于从已经找到相对于基准改善其度量的方式的应用的其他开发者获得的反馈。在一些示例中,信息可以基于从计算平台的开发者获得的应急措施(work-around),所述计算平台的开发者可能已在识别出在计算平台上执行的其他处于类似状况的应用已经相对于基准改善其度量之后发现修复。
在一些示例中,关于改善应用性能的方式的信息可以由开发者服务模块162自动得出(例如,使用机器学习模型、反复试验、或相对于其他附图更详细描述的其他方式)。例如,开发者服务模块162可以确定执行不佳的应用使用哪些应用编程接口(API)或库,确定计算平台上其他执行更好的应用将不同的API或库用于相同的功能性(例如,不同的第三方库用于用户认证),并得出结论,执行不佳的应用可通过用执行更好的应用所使用的API或库调用代替现有的API或库调用来改善其性能。
在图1的示例中,开发者服务模块162可以确定应用122A的所识别的启动时间问题可以归因于启动期间应用122A所依赖的慢速执行的应用编程接口(API),开发者服务模块162已经观察到该应用编程接口(API)导致其他应用的慢速启动时间。作为一些示例,开发者服务模块162可以确定对应用122A的启动时间问题的修复是:使用响应更快的API、将API调用重新定位在启动线程之外、或者调整启动顺序,使得直到应用122A的其他资源以其他方式启动并运行,才会使用慢速API。
在任何情况下,一旦开发者服务模块162确定修复,开发者服务模块162就可以与开发者客户端模块120共享关于修复的信息,用于随后向用户开发者呈现。开发者服务模块162可以输出对应用122A的修复的指示,用于在计算设备110呈现。例如,开发者服务模块162可以经由网络130发送数据,该数据被开发者客户端模块120解释为通过关于修复的信息来更新用户接口114的指令。
响应于接收到通过关于修复的信息来更新用户接口114的指令,开发者客户端模块120可以使得UIC 112输出用户接口114。也就是说,开发者客户端模块120可以使得UIC112输出任何已确定的性能异常或问题和/或为被识别为解决已确定的性能异常或问题的任何修复的图形指示用于显示。通过这种方式,根据所述技术进行操作的计算系统可以输出性能问题以及可能修复的指示,软件开发者、设计者或计算系统的其他用户可以选择所述指示以实施或不实施,从而相对于在相似或对应计算平台中执行的其他应用的性能来改善应用的性能。
通过建立基准,然后根据基准评估在计算平台上执行的应用的性能度量,示例性计算系统可以在开发者甚至考虑寻求性能改善之前就识别应用的性能问题。示例性计算系统可以输出有关性能差距的信息,以教导开发者了解他或她的应用的性能与平台上可用的其他应用相比如何。开发者无需知道需要改善哪些领域,可以改善那些领域,或者甚至不必知道如何改善这些领域。相反,示例性计算系统可以自动识别改善的区域,并建议或自动实施修复,以将应用的性能改善为与在计算平台上执行的其他应用的性能更加相符合。因此,示例性计算系统可以使得在特定计算平台上执行的应用更有效地操作,并且可能在用户与计算平台上的不同应用进行交互时提供更一致的用户体验。
图2是示出示例性计算系统的方框图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。图2的计算系统260被描述为图1的计算系统160的示例。图2仅示出计算系统260的一个特定示例,且计算系统260的很多其他示例可以在其他实例中使用,并且可包括计算系统260中包括的组件的子集,或者可包括图2未示出的附加组件。
如在图2的示例中所示,计算系统260包括经由通信信道274通信地耦合的一个或多个处理器270、一个或多个通信单元272、以及一个或多个存储组件276。存储组件276包括开发者服务模块262和应用性能数据储存器264。开发者服务模块262包括UI模块266、分析模块267和校正模块268。
通信信道274可以互连组件266、270、272和276中的每一个,用于组件间通信(物理地、通信地和/或操作地)。在一些示例中,通信通道274可包括系统总线、网络连接、进程间通信数据结构或用于传递数据的任何其他方法。
通过传输和/或接收一个或多个网络上的网络信号,计算系统260的一个或多个通信单元272可经由一个或多个有线和/或无线网络与外部设备(例如,图1的计算设备110、116、118)通信。通信单元272的示例包括网络接口卡(例如,诸如以太网卡)、光收发器、射频收发器、GPS接收器或可以发送和/或接收信息的任何其他类型的设备。通信单元272的其他示例可包括短波无线电、蜂窝数据无线电、无线网络无线电以及通用串行总线(USB)控制器。
计算系统260内的一个或多个存储组件276可存储在计算系统260的操作期间进行处理的信息(例如,计算系统260可存储在计算系统260处执行期间由模块262、266、267和268以及数据储存器264收集和访问的应用性能数据)。在一些示例中,存储组件276是临时存储器,这意味着存储组件276的主要目的并非长期存储。计算系统260上的存储组件276可以被配置用于信息的短期存储,作为易失性存储器,并且因此如果断电则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)以及本领域公知的其他形式的易失性存储器。
在一些示例中,存储组件276还包括一个或多个计算机可读存储介质。在一些示例中,存储组件276包括一个或多个非暂时性计算机可读存储介质。存储组件276可以被配置为存储比通常由易失性存储器存储的信息量更多的信息。存储组件276可以进一步被配置用于信息的长期存储,作为非易失性存储空间,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁性硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程存储器(EEPROM)的形式。存储组件276可以存储与模块262、266、267和268以及数据储存器264相关联的程序指令和/或信息(例如,数据)。存储组件276可包括被配置为存储与模块262、266、267和268以及数据储存器264相关联的数据或其他信息的存储器。
一个或多个处理器270可以实施与计算系统260相关联的功能性和/或执行指令。处理器270的示例包括应用处理器、显示控制器、图形处理器、辅助处理器、一个或多个传感器集线器以及配置以充当处理器、处理单元或处理设备的任何其他硬件。模块262、266、267和268可通过处理器270操作,来执行计算系统260的各种动作、操作或功能。例如,计算系统260的处理器270可以检索并执行存储组件276存储的指令,这些指令使得处理器270执行归因于模块262、266、267和268的操作。在通过处理器270执行时,这些指令可以使得计算系统260将信息存储在存储组件276内。
开发者服务模块262可包括图1的计算系统160的开发者服务模块162的一些或全部功能性。开发者服务模块262可以附加性地包括图1的计算设备110的客户端服务模块120的一些或全部功能性。开发者服务模块262可以执行用于提供应用性能评估服务的与模块162和120类似的操作,该应用性能评估服务相对于在计算平台上执行的其他应用,识别应用中的性能异常,并推荐或实施修复,以改善计算平台上应用的性能。
UI模块280可以提供与开发者服务模块262提供的服务相关联的用户接口。例如,UI模块280可以托管Web接口,诸如计算设备110的客户端可以从该Web接口访问开发者服务模块262所提供的服务。例如,计算设备110的用户可以与Web浏览器或在计算设备110上执行或可从其访问的其他应用(例如,开发者客户端模块120)进行交互。UI模块280可将信息发送到Web浏览器或导致客户端显示诸如图1的用户接口114的用户接口的其他应用。
分析模块267可以分析数据储存器264中存储的应用性能数据。分析模块267可以确定与在计算平台上执行的单独的应用相关联的性能度量,确定用于评估性能度量的基准,并将性能度量与基准进行比较,以确定相对于在计算平台上执行的其他应用,单独的应用是否具有潜在的性能异常或问题。
作为性能度量的一个示例,分析模块267可以确定与应用相关联的许可拒绝率。例如,许可可以准予应用访问用户的日历、相机、用户的联系人列表、用户或设备的位置、麦克风、电话、其他传感器、消息服务和存储。应用通常依靠特定许可来正常工作,但是开发者可能不知道实际有多少百分比的用户同意向应用准予每个许可,以及准予或不准予应用每个许可的用户行为与在计算平台上执行的其他应用相比如何。计算平台可能需要最小化许可拒绝的频率,以改善用户对计算平台的满意度。分析模块267可将许可拒绝率定义为期间用户未准予或以其他方式拒绝应用许可的每日许可会话的数量(例如,百分比)。
作为性能度量的另一个示例,分析模块267可以确定应用的启动时间。启动时间可以指示应用发起的时间量。如果用户可以在两个对等应用之间进行选择,则他或她可能会更频繁地选择发起具有最短的发动时间的对等。计算平台可能希望所有应用尽快发起,从而为计算平台提供最好的用户体验。
分析模块267可以基于时间的测度(例如,秒、毫秒等)来量化启动时间。分析模块267可将发动时间量化为多个不同水平的其中一个,例如,慢速、中速、快速。
分析模块267可通过一个或多个其他方式进一步量化发动时间度量。例如,分析模块267可以在每日会话的一个百分比时为应用分配“慢速冷发动”标签,在每日会话的该百分比期间应用的用户经历超过五秒钟的至少一个冷启动时间。应用的冷发动是应用从头发起(例如,经常显示启动画面等)。但是,分析模块267可以在每日会话的一个百分比时为应用分配“慢速热发动”标签,在每日会话的该百分比期间应用的用户经历超过1.5秒钟的至少一个热启动时间。当应用在先前在后台执行之后进入用户接口的前台时(例如,通常显示先前观看的屏幕等,该屏幕是在上次观看应用时最后观看的),发生应用的热发动。分析模块267可以为启动时间度量分配专用于特定的计算平台的其他类型的标签。
作为性能度量的另一个示例,分析模块267可以确定失败的无线信号扫描度量。例如,有些应用可能导致计算设备扫描以获得可用的近场通信(NFC)或其他无线信号。这种扫描是功率密集的,并且经常导致增加的电池耗尽。因此,计算平台可能希望鼓励防止导致浪费的电池消耗的失败无线信号扫描。失败无线信号扫描可以指示期间应用的用户经历持续30分钟以上或其他一些持续时间的至少一次失败无线信号扫描的电池会话的百分比(即,设备两次充满电之间的时间段)。
分析模块267生成的性能度量的其他示例可包括应用无响应(ANR)率或崩溃率,该ANR率定义为期间应用用户经历至少一次应用无响应并要求重新发动的每日会话的百分比,该崩溃率指示期间用户经历至少一次应用崩溃的每日会话的百分比。其他性能度量示例包括卡机(stuck)唤醒锁定率,其指示当应用在后台运行时期间用户经历一个小时以上的至少一次部分唤醒锁定的电池会话的百分比。
校正模块268可以相对于在相同或相似计算平台上执行的其他应用从分析模块267获得有关在计算平台上执行的应用的潜在问题的信息,并确定计算系统260为解决该问题所采取的修复或其他动作并改善应用的性能。例如,校正模块268当许可拒绝率在计算平台的合适范围之外时可以使得UI模块266输出用于修复应用的推荐,从而提供对许可请求的详细说明。
在一些情况下,校正模块268可以警告计算系统160,使得执行不佳的应用在应用商店的评级中降级。如果应用具有远在基准的阈值量之外的性能度量,则校正模块268可以警告计算系统160,使得执行不佳的应用不能从应用商店中发现或者从应用商店中获取。
对于每个性能度量,校正模块268可以维护相对于分析模块267识别的每个特定问题的关于改善应用性能的方式的信息。例如,校正模块268可以从具有形成基准的基础的度量的或者以其他方式发现改善其应用性能的方式的应用开发者获得反馈,并使用反馈来提供特定问题的解决方面或修复。校正模块268可以从计算平台开发者获得应急措施的信息,他或她可能已经在识别出在计算平台上执行的其他处于类似状况的应用相对于基准改善其度量的方法之后发现所述应急措施。
在一些示例中,校正模块268可通过执行自动错误修复技术来自动确定问题的修复,而无需用户的任何帮助。例如,校正模块268可以生成一个或多个可能改善应用性能的潜在软件补丁,并且通过反复试验,尝试不同的补丁,以查看哪个补丁(如果有的话)导致修复。校正模块268可以执行基于搜索的程序变异、机器学习和/或基因编程技术,以识别一个或多个合适的修复。在确定潜在的修复之后,校正模块268可通过测试修复或将修复交付给应用开发者来验证修复,从而他或她可以验证修复。
图3是根据本公开的一个或多个方面的访问由示例性计算系统提供的应用性能评估服务的计算设备的显示屏的示例性屏幕截图。图3示出用户接口314。在图1的系统100的背景下描述图3。
当开发者客户端模块120请求访问开发者服务模块162提供的应用性能评估服务时,计算系统160可以使得计算设备110在UIC 112上呈现用户接口314。用户接口314只是这种用户接口的一个示例,还可以有很多其他示例。
用户接口314的目的是向应用开发者提供对关于目标应用获得的特定性能度量的深入了解,以便理解相对于在计算平台上执行的执行最好的应用目标应用执行得如何。在一些示例中,应用的相对性能可以基于与目标应用相似类别或种类的执行最好的应用。在其他示例中,应用的相对性能可以基于视为对等的执行最好的应用。无论如何,用户接口314的好处包括导致对整个计算平台或应用生态系统的可观察或可测量的改善,而不仅仅是对在该生态系统中执行的单独应用的改善。例如,开发者可以观看用户接口314,以了解应用的性能相对于对等或其他应用落后在什么地方,因此有动机改善应用的性能,从而导致计算平台整体性能的提高。
用户接口314分为若干选项卡或部分,每个选项卡与不同的性能度量或性能度量组相关联。例如,如图3所示,启动度量选项卡是在用户接口314的前台中,度量B-E和重要度量组出现在用户接口314的后台中从视野中隐藏的选项卡上。
每个选项卡可包括结果部分(例如,以图形、表格、图表或其他数据格式显示),用于提供有关与基准以及基准内可接受的阈值水平相比的应用相对性能的信息。在图3的示例中,应用的启动性能度量在基准的可接受阈值量之外。
在一些示例中,结果部分包括有关应用的性能在何处与在计算平台上执行的其他应用进行比较的信息。例如,在图3的示例中,应用的启动度量与在计算平台上执行的应用的后面25%相符合。
用户接口314可以使用颜色或其他格式来标示应用的性能。例如,在性能度量在基准的可接受阈值水平之外的情况下,用户接口314可以使用红色字体或线条颜色来强调应用可能存在潜在的性能问题。在性能度量在基准的可接受阈值水平以内的情况下,用户接口314可以使用绿色字体或线条颜色来强调应用与计算平台上其他执行最好的应用类似地执行。
用户接口314的每个选项卡可包括其中清楚地识别了潜在问题并显示了针对潜在问题的推荐修复的摘要和解决方面部分。例如,用户接口314包括发动时间问题的详细摘要以及开发者可以实施以改善应用的发动时间度量的可能修复。
用户接口314中还可包括可选元素,它们使得计算系统160执行各种动作,以进一步帮助开发者相对于在计算平台上执行的其他应用的性能改善应用的性能。作为一个示例,用户可以选择使得计算系统160链接到源文件编辑器的图形元素,以查看计算系统160怀疑可能是慢速发动时间原因的源代码的强调部分。作为另一个示例,用户可以选择使得计算系统160自动修改源代码可疑部分的图形元素,而无需进一步的用户输入。
图4是示出由示例性计算系统执行的示例性操作的流程图,该示例性计算系统被配置为根据本公开的一个或多个方面,相对于在相似或对应计算平台上执行的其他应用的性能,识别应用的性能问题,并确定改善应用性能的方式。操作400-490可通过诸如计算系统160、260的计算系统执行。在一些示例中,计算系统可通过与图4所示顺序不同的顺序来执行操作400-490。在一些示例中,计算系统可以执行比操作400-490更多或更少的操作。为了描述的方便,在图2的计算系统260的背景下描述图4。
如图4所示,在操作中,计算系统260可以获得用户同意以使用在应用的相应设备上执行应用期间收集的应用性能数据(400)。例如,在计算系统260或计算设备116、118中的任一个存储或传输应用性能数据之前,将向计算设备116、118的用户提供给予或不给予计算系统260许可收集和利用这些数据的机会。仅当用户明确不含糊地同意这种数据收集时,计算系统260才会使用来自用户设备的应用性能数据。
计算系统260可获得在第一计算设备组处执行第一应用期间收集的第一性能数据(410),且计算系统260可获得在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据(420)。例如,分析模块267可以接收经由网络130从计算设备116、118传输的性能数据。分析模块267可将性能数据存储在数据储存器264。
在一些示例中,来自第一计算设备组和第二计算设备组的每个计算设备执行共同计算平台的相应实例。换言之,第一计算设备组和第二计算设备组的每一个可以操作共同的操作系统或计算平台,使得分析模块在确定特定应用的性能时,相对于在与所述特定应用相同或相似计算系统上执行的其他应用确定应用性能。
在一些示例中,第一应用和一个或多个第二应用中的每个可以与应用的共同类别或种类相关联。例如,第一应用和第二应用可以是同一旅行类别内的旅行类别应用或导航种类应用。
在一些示例中,第一应用和一个或多个第二应用中的每个是对等应用,且第一应用与一个或多个第二应用中的每个的区别在于以下中的至少一个功能性、标题或开发者。例如,第一应用和第二应用可以是特定类型的游戏(例如,第一人称射击游戏、填字游戏等),虽然这些应用可能在功能性上共享一些重叠,但是这些应用并不相同,并且在功能性、标题、游戏玩法、开发者、外观或其他特征上不同。
计算系统260可以基于第一性能数据来确定量化第一应用的性能的至少一个度量(430)。例如,分析模块267可以基于应用122A的性能数据来计算许可拒绝率度量,该性能数据指示用户多久阻止一次应用122A访问计算设备116(例如,相机、麦克风等)的特定许可。
计算系统260可以基于第二性能数据确定一个或多个基准(440)。例如,分析模块267可以确定在计算设备116、118上执行的一个或多个其他应用(例如,应用122B)的平均许可拒绝率。分析模块267可以使用平均许可拒绝率作为基准来确定应用相对于在计算平台上执行的其他应用是否具有太高的许可拒绝率。
计算系统260可将至少一个度量与根据第二性能数据得出的对应基准进行比较(450)。例如,分析模块267可将应用122A的许可拒绝率与在操作440期间建立的基准进行比较。
如果度量在基准的阈值量之内,则计算系统260可以确定第一应用没有该特定度量的性能问题(460,是分支)。相反,如果度量不在基准的阈值量之内,则计算系统260可以确定第一应用具有该特定度量的性能问题(460,否分支)。分析模块267可以确定应用122A的许可拒绝率超过操作440期间建立的基准达10%或超过容许阈值的一些其他数量。
计算系统260可以确定对第一应用的修复(470)。例如,分析模块267可以触发校正模块268确定应用122A改善许可拒绝率度量的方式,使得应用122A在计算平台上的整体性能更接近于在计算平台上其他执行最好的应用的性能。校正模块268可以检查应用122A的源文件或其他属性,并确定当应用122A请求使用设备位置或相机的许可时,没有向用户提供对于请求的解释或原因。校正模块268可以确定如果在做出未来请求时应用122A包括这样的信息可以改善许可拒绝率。
计算系统260可以输出修复的指示(480)。例如,校正模块268可以向UI模块266发送命令,使得诸如用户接口114或314的用户接口向计算系统260的开发者用户提供他或她可能希望修改应用122A以在提出许可请求时提供更多信息的信息。
计算系统260可以实施修复(490)。例如,在输出推荐修复的指示之后,UI模块266可以从计算设备110或其他开发者设备接收用户输入的指示,该用户输入授权通过计算系统260自动实施修复。响应于接收用户输入的指示,校正模块268可以向计算设备116输出指令,用于自动实施对应用122A的修复。指令可包括校正模块268生成的并在应用122A的执行期间用于引起修复的更新的源文件、更新的可执行文件或更新的配置文件。
除了实施修复之外或者作为实施修复的替代,计算系统260可响应于相对于计算平台上其他应用的性能确定应用中的性能不足而采取其他动作。例如,从现有应用性能数据来看,性能问题的原因可能不是很明显。计算系统260可以经由网络130发送指令,以使得在应用122A在计算设备116执行时与正常收集的相比计算设备116开始收集更详细的性能数据。例如,计算系统260可以使得计算设备116的性能数据收集率增加,或者可以使得计算设备116收集超出所收集的正常数据的其他数据。
条款1.一种方法,包括:由计算系统获得在第一计算设备组处执行第一应用期间收集的第一性能数据;基于所述第一性能数据,确定用于量化所述第一应用的性能的至少一个度量;由所述计算系统将所述至少一个度量与对应基准进行比较,所述对应基准根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据得出,所述一个或多个第二应用中的每个与所述第一应用不同;确定所述至少一个度量是否在所述对应基准的阈值量之内;响应于确定所述至少一个度量不在所述对应基准的阈值量之内,确定对所述第一应用的修复;以及通过所述计算系统输出对所述第一应用的修复的指示,用于在开发者设备上呈现。
条款2.根据条款1所述的方法,其中,来自所述第一计算设备组和所述第二计算设备组中的每个计算设备执行共同计算平台的相应实例。
条款3.根据条款1或条款2中任一项所述的方法,其中,所述第一应用和所述一个或多个第二应用中的每个与应用的共同类别或种类相关联。
条款4:根据条款3所述的方法,其中,所述第一应用和所述一个或多个第二应用中的每个是对等应用,且所述第一应用与所述一个或多个第二应用中的每个的不同在于以下中的至少一个:功能性、标题或开发者。
条款5.根据条款1至4中任一项所述的方法,还包括:从所述开发者设备接收用户输入的指示,所述用户输入授权由所述计算系统自动实施所述修复;以及响应于接收所述用户输入的指示,由所述计算系统向来自所述第一计算设备组的一个或多个计算设备输出用于自动实施对所述第一应用的所述修复的指令。
条款6.根据条款1至5中任一项所述的方法,其中,对所述第一应用的所述修复包括对与所述第一应用相关联的源代码或配置文件的一个或多个修改。
条款7.根据条款1至6中任一项所述的方法,其中,对所述第一应用的所述修复包括禁用所述第一应用使用的库、函数调用或服务。
条款8.根据条款1至7中任一项所述的方法,其中,对所述第一应用的所述修复包括用替代库、函数调用或服务代替所述第一应用使用的第一库、函数调用或服务。
条款9.根据条款1至8中任一项所述的方法,其中,所述第一计算设备组和所述第二计算设备组包括单个计算设备。
条款10.一种包括至少一个处理器的计算系统,所述至少一个处理器被配置为执行条款1至9所述的方法中的任一个。
条款11.一种计算系统,包括用于执行条款1至9所述的方法中的任一个的装置。
条款12.一种包括指令的计算机可读存储介质,所述指令在被执行时使得至少一个处理器执行条款1至9所述的方法中的任一个。
条款13.一种方法,包括:由计算设备将在执行第一应用期间收集的第一性能数据输出到计算系统;由所述计算设备从所述计算系统接收执行所述第一应用的修复的指令,所述修复相对于在计算设备组处执行的一个或多个第二应用的性能改善第一应用的性能,所述一个或多个第二应用中的每个与所述第一应用不同;以及由所述计算设备执行所述指令以执行所述第一应用的所述修复。
条款14.一种方法,包括:由计算设备从计算系统接收对在第一计算设备组处执行的第一应用的修复的推荐,所述修复相对于在第二计算设备组处执行的一个或多个第二应用的性能改善所述第一应用的性能,所述一个或多个第二应用中的每个与所述第一应用不同;由所述计算设备接收授权所述第一应用的所述修复的用户输入;响应于向所述计算系统发送授权所述第一应用的所述修复的所述用户输入的指示,由所述计算设备从所述计算系统接收执行所述第一应用的所述修复的指令;以及由所述计算设备基于所述指令来执行所述第一应用的所述修复。
条款15.一种包括至少一个处理器的计算设备,所述至少一个处理器被配置为执行条款13或条款14所述的方法中的任一个。
条款16.一种计算系统,包括用于执行条款13或条款14所述的方法中的任一个的装置。
条款17.一种包括指令的计算机可读存储介质,所述指令在被执行时使得至少一个处理器执行条款13或条款14所述的方法中的任一个。
作为示例而非限制,这种计算机可读存储介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁性存储设备、闪存或者可用于以指令或数据结构形式存储所需程序代码并且可由计算机访问的任何其他存储介质。此外,任何连接都适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外、无线电和微波的无线技术从网站、服务器或其他远程源传输指令,则介质的定义包括同轴电缆、光纤电缆、双绞线、DSL或诸如红外、无线电和微波的无线技术。但是应当理解,计算机可读存储介质以及介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是针对非瞬态有形存储介质。本文使用的磁盘和光盘包括压缩盘(CD)、激光盘、光学盘、数字多功能盘(DVD)、软盘和蓝光盘,其中磁盘通常以磁性方式复制数据,而光盘则通过激光以光学方式复制数据。上述的组合也应包括在计算机可读介质的范围内。
指令可由一个或多个处理器执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其他等效集成或分立逻辑电路。因此,如本文所使用的,术语“处理器”可以指任何前述结构或适合于实施本文所述技术的任何其他结构。此外,在一些方面中,本文所述功能性可以在专用硬件和/或软件模块内提供。此外,这些技术可以在一个或多个电路或逻辑元件中完全实施。
本公开的技术可以在包括无线手机、集成电路(IC)或IC组(例如,芯片组)的多种设备或装备中实施。在本公开中描述各种组件、模块或单元,以强调被配置为执行所公开技术的设备的功能方面,但不一定需要由不同硬件单元来实施。此外,如上所述,可将各种单元组合在硬件单元中,或者通过互操作硬件单元的合集来提供,包括与合适的软件和/或固件结合的一个或多个处理器,如上所述。
已经描述各种实施例。这些和其他实施例皆落入所附权利要求的范围。
Claims (12)
1.一种方法,包括:
由计算系统获得在第一计算设备组处执行第一应用期间收集的第一性能数据;
基于所述第一性能数据,确定用于量化所述第一应用的性能的至少一个度量;
由所述计算系统将所述至少一个度量与对应基准进行比较,所述对应基准是根据在第二计算设备组处执行一个或多个第二应用期间收集的第二性能数据而得出的,所述一个或多个第二应用中的每个与所述第一应用不同;
确定所述至少一个度量是否在所述对应基准的阈值量之内;
至少部分地基于确定所述至少一个度量不在所述对应基准的阈值量之内,确定对所述第一应用的修复;以及
由所述计算系统输出对所述第一应用的所述修复的指示,用于在开发者设备上呈现。
2.根据权利要求1所述的方法,其中,来自所述第一计算设备组和所述第二计算设备组中的每个计算设备执行共同计算平台的相应实例。
3.根据权利要求1或权利要求2所述的方法,其中,所述第一应用和所述一个或多个第二应用中的每个第二应用与应用的共同类别或种类相关联。
4.根据权利要求3所述的方法,其中,所述第一应用和所述一个或多个第二应用中的每个第二应用是对等应用,且所述第一应用与所述一个或多个第二应用中的每个第二应用的不同在于以下中的至少一个:功能性、标题或开发者。
5.根据权利要求1至4中任一项所述的方法,还包括:
从所述开发者设备接收用户输入的指示,所述用户输入授权由所述计算系统或所述第一计算设备组自动实施所述修复;以及
响应于接收所述用户输入的指示,由所述计算系统向来自所述第一计算设备组的一个或多个计算设备输出用于自动实施对所述第一应用的所述修复的指令。
6.根据权利要求1至5中任一项所述的方法,其中,对所述第一应用的所述修复包括对与所述第一应用相关联的源代码或配置文件的一个或多个修改。
7.根据权利要求1至6中任一项所述的方法,其中,对所述第一应用的所述修复包括禁用由所述第一应用使用的库、函数调用或服务。
8.根据权利要求1至7中任一项所述的方法,其中,对所述第一应用的所述修复包括用替代库、函数调用或服务代替由所述第一应用使用的第一库、函数调用或服务。
9.根据权利要求1至8中任一项所述的方法,其中,所述第一计算设备组和所述第二计算设备组包括单个计算设备。
10.一种包括至少一个处理器的计算系统,所述至少一个处理器被配置为执行权利要求1至9所述的方法中的任一个。
11.一种计算系统,包括用于执行权利要求1至9所述的方法中的任一个的装置。
12.一种包括指令的计算机可读存储介质,所述指令在被执行时使得至少一个处理器执行权利要求1至9所述的方法中的任一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862667974P | 2018-05-07 | 2018-05-07 | |
US62/667,974 | 2018-05-07 | ||
PCT/US2018/038435 WO2019216926A1 (en) | 2018-05-07 | 2018-06-20 | System for adjusting application performance based on platform level benchmarking |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112041818A true CN112041818A (zh) | 2020-12-04 |
Family
ID=62981319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880092343.1A Pending CN112041818A (zh) | 2018-05-07 | 2018-06-20 | 基于平台水平基准化来调整应用性能的系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11860758B2 (zh) |
EP (1) | EP3762828A1 (zh) |
CN (1) | CN112041818A (zh) |
WO (1) | WO2019216926A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11770311B2 (en) * | 2019-04-05 | 2023-09-26 | Palo Alto Networks, Inc. | Automatic and dynamic performance benchmarking and scoring of applications based on crowdsourced traffic data |
EP4089599B1 (en) * | 2020-01-06 | 2023-10-04 | InsuRTAP Inc. | Processing device, processing method, and program |
US11836040B2 (en) * | 2021-10-29 | 2023-12-05 | Fidelity Information Services, Llc | Software application development tool for automation of maturity advancement |
US20230394509A1 (en) * | 2022-06-05 | 2023-12-07 | Apple Inc. | App store peer group benchmarking with differential privacy |
US20240289246A1 (en) * | 2023-02-26 | 2024-08-29 | Apple Inc. | Techniques for managing performance metrics associated with software applications |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144584A1 (en) * | 2007-11-30 | 2009-06-04 | Iolo Technologies, Llc | System and method for performance monitoring and repair of computers |
US20120290870A1 (en) * | 2010-11-05 | 2012-11-15 | Interdigital Patent Holdings, Inc. | Device validation, distress indication, and remediation |
US20170004155A1 (en) * | 2015-06-30 | 2017-01-05 | International Business Machines Corporation | Extensible indexing system evaluation and recommendation |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040003266A1 (en) | 2000-09-22 | 2004-01-01 | Patchlink Corporation | Non-invasive automatic offsite patch fingerprinting and updating system and method |
US7424706B2 (en) | 2003-07-16 | 2008-09-09 | Microsoft Corporation | Automatic detection and patching of vulnerable files |
US20060020866A1 (en) * | 2004-06-15 | 2006-01-26 | K5 Systems Inc. | System and method for monitoring performance of network infrastructure and applications by automatically identifying system variables or components constructed from such variables that dominate variance of performance |
US10318399B2 (en) * | 2013-03-12 | 2019-06-11 | Netflix, Inc. | Using canary instances for software analysis |
US10230568B2 (en) * | 2013-10-30 | 2019-03-12 | Hewlett Packard Enterprise Development Lp | Monitoring a cloud service modeled as a topology |
US9658917B2 (en) * | 2014-02-07 | 2017-05-23 | AppDynamics, Inc. | Server performance correction using remote server actions |
US10452511B2 (en) * | 2016-04-29 | 2019-10-22 | International Business Machines Corporation | Server health checking |
US10459780B2 (en) * | 2017-04-29 | 2019-10-29 | Cisco Technology, Inc. | Automatic application repair by network device agent |
-
2018
- 2018-06-20 US US16/978,574 patent/US11860758B2/en active Active
- 2018-06-20 CN CN201880092343.1A patent/CN112041818A/zh active Pending
- 2018-06-20 WO PCT/US2018/038435 patent/WO2019216926A1/en unknown
- 2018-06-20 EP EP18743622.5A patent/EP3762828A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090144584A1 (en) * | 2007-11-30 | 2009-06-04 | Iolo Technologies, Llc | System and method for performance monitoring and repair of computers |
US20120290870A1 (en) * | 2010-11-05 | 2012-11-15 | Interdigital Patent Holdings, Inc. | Device validation, distress indication, and remediation |
US20170004155A1 (en) * | 2015-06-30 | 2017-01-05 | International Business Machines Corporation | Extensible indexing system evaluation and recommendation |
Non-Patent Citations (1)
Title |
---|
HAIYAN ZHU等: "VegaBench: A Benchmark Tool for Grid System Software", 《2006 FIFTH INTERNATIONAL CONFERENCE ON GRID AND COOPERATIVE COMPUTING WORKSHOPS》, 19 December 2006 (2006-12-19), pages 1 - 6 * |
Also Published As
Publication number | Publication date |
---|---|
EP3762828A1 (en) | 2021-01-13 |
US20210019247A1 (en) | 2021-01-21 |
US11860758B2 (en) | 2024-01-02 |
WO2019216926A1 (en) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11860758B2 (en) | System for adjusting application performance based on platform level benchmarking | |
US11055646B2 (en) | Automated ticket resolution | |
US10387292B2 (en) | Determining application test results using screenshot metadata | |
US10628294B2 (en) | Mock services for software infrastructures | |
KR102021317B1 (ko) | 웹 페이지의 맞춤 최적화 기법 | |
US10261811B2 (en) | Systems and methods for contextually allocating emulation resources | |
US20180196875A1 (en) | Determining repeat website users via browser uniqueness tracking | |
US9645914B1 (en) | Apps store with integrated test support | |
US12001558B2 (en) | Methods, systems, articles of manufacture and apparatus to verify application permission safety | |
US10171604B2 (en) | System and method for pushing network information | |
US20180191884A1 (en) | Automated data collection and analytics | |
CN101794359A (zh) | 用于启用用于遗留应用的经群体测试的安全特征的方法和系统 | |
US20170128838A1 (en) | Application testing with experimental layers | |
CN109862100B (zh) | 用于推送信息的方法和装置 | |
WO2019019356A1 (zh) | 应用程序测试方法、装置、计算机设备和存储介质 | |
CN111330280A (zh) | 游戏中的数据处理方法、装置、存储介质与电子设备 | |
CN108847948B (zh) | 活动群的创建方法及装置、介质和计算设备 | |
US10147122B2 (en) | Prioritizing topics of interest determined from product evaluations | |
JP7320443B2 (ja) | 互換性のあるモジュールを特定するシステムおよび方法 | |
US20170171100A1 (en) | Classified Network Bandwidth Management Based on Customer Performance in Social Communities | |
US9367373B2 (en) | Automatic configuration consistency check | |
US20170351310A1 (en) | Application power usage | |
KR20190051436A (ko) | 어플리케이션 사용환경 설정방법 및 이를 이용한 테스트방법 | |
US12117980B1 (en) | Auto recognition of big data computation engine for optimized query runs on cloud platforms | |
US11785094B2 (en) | Secure content delivery computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |