一种性能数据发送方法、装置、计算机设备及存储介质与流程

文档序号:17695651发布日期:2019-05-17 21:29阅读:174来源:国知局
本申请涉及埋点追踪领域,尤其涉及一种性能数据发送方法、装置、计算机设备及存储介质。
背景技术
::随着安卓(android)智能操作系统的发展,装载于终端设备上的应用(如游戏、视频等应用)越来越多,终端设备包括智能手机、平板电脑等。由于应用的开发问题,应用与终端设备的兼容问题等,应用在终端上运行时,往往会存在性能缺陷。为利于应用的改进、提升应用的运行流畅度,应用在终端上运行时,往往需要收集应用运行时相应的等性能数据,如应用程序的冷/热启动时间,应用程序某个页面的打开时间等,通过收集的性能数据为应用的性能缺陷分析和应用改进提供数据支持。传统的性能数据收集方式中,是通过私有云的方式进行收集,然而,由于用户的终端设备在运行某个应用时可能同时并行使用其它多个应用,在私有云上收集的终端使用的某个应用的性能数据并不能反映终端使用该某应用时的真实性能。因此可得,传统方案获取的性能数据,并不全面,使得数据分析的准确性较低。技术实现要素:基于此,本申请提供一种性能数据发送方法、装置、计算机设备及存储介质,用于解决获取的性能数据并不全面,使得数据分析的准确性较低的问题。一种性能数据发送方法,包括:根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,组件为目标应用对应的程序的基本构建块,数据埋点为在组件的生命周期的方法中嵌入的代码或脚本;当目标应用运行过程中触发到数据埋点时,通过第一线程确定数据埋点对应的性能数据收集项目;通过第一线程获取性能数据收集项目对应的性能数据,其中,第一线程为运行目标应用所用的线程;创建第二线程,第一线程与第二线程为不同的线程;通过第二线程将性能数据发送至服务器。一种性能数据发送装置,包括:运行模块,用于根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,目标应用的组件为目标应用对应的程序的基本构建块,数据埋点为在组件的生命周期的方法中嵌入的代码或脚本;确定模块,用于当目标应用运行过程中触发到数据埋点时,通过第一线程确定数据埋点对应的性能数据收集项目;获取模块,用于通过第一线程获取性能数据收集项目对应的性能数据,其中,第一线程为运行目标应用所用的线程;创建模块,用于创建第二线程,第一线程与第二线程为不同的线程;发送模块,用于通过第二线程将性能数据发送至服务器。一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述性能数据发送方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述性能数据发送方法的步骤。由此可得,在上述性能数据发送方法、装置、计算机设备及存储介质所提供的方案中,在应用执行过程中,触发到上述预设的数据埋点即可获取数据埋点对应的性能数据并反馈给服务器。由于是嵌入在组件生命周期中的数据埋点,不会占用到额外的运算资源并且收集过程中,用户几乎是无感知的,另一方面可自定义获取所需的性能数据,有效地获取到所需的性能数据,获取的性能数据比较全面,从而分析的准确性得以提高。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请中性能数据发送方法一个系统框架示意图;图2是本申请中性能数据发送方法一个实施例流程示意图;图3是本申请中性能数据发送方法另一实施例流程示意图;图4是本申请中性能数据发送方法另一实施例流程示意图;图5是本申请中性能数据发送方法另一实施例流程示意图;图6是本申请中性能数据发送装置一个实施例结构示意图;图7是本申请中性能数据处理系统一个实施例结构示意图;图8是本申请中计算机设备的一个实施例结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请提供了一种性能数据发送方法,应用于如图1所示的系统框架图中,该系统框架中包括终端设备以及服务器,其中,终端设备通过网络与服务器进行通信。上述性能数据发送方法包括如下步骤:根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点;当目标应用运行过程中触发到数据埋点时,根据数据埋点确定性能数据收集项目;获取性能数据收集项目对应的性能数据;将性能数据发送至服务器,以使服务器对性能数据进行分析处理。这样,在应用执行过程中,触发到上述数据埋点即可获取数据埋点对应的性能数据并反馈给服务器。由于是嵌入在组件生命周期中的数据埋点,不会占用到额外的运算资源并且收集过程中,用户几乎是无感知的,另一方面可自定义获取所需的性能数据,有效地获取到所需的性能数据,最后分析所用的应用性能数据比较全面,使得分析的准确性得以提高。其中,终端设备可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等,具体不做限定,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现,在一些应用场景中,服务器具体指的是具有大数据分析能力的大数据平台。下面对本申请提供的性能数据发送方法进行详细描述,包括如下步骤:s10、根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点;可以理解,当用户通过终端设备需要使用某个应用(application,app)时,可以根据用户的操作开启并允许该应用,例如用户通过点击应用的图标进入该应用从而使得终端设备运行该应用,也就是终端设备可以接收用户预设操作产生的指令运行应用。而目标应用指的是本申请中需进行性能数据获取并分析的应用。需要说明的是,本申请中所指的目标应用,是指基于安卓(android)所开发的应用程序,其中,目标应用的组件是一个安卓应用程序的基本构建块。目标应用中的每个组件都是一个终端设备的操作系统可以进入该目标应用的不同的入口。每一个目标应用的组件都是一个独特的构建块,可以帮助定义应用程序的整体行为。通常,目标应用有不同类型的组件,每种类型都有不同的用途,并且有一个独立的生命周期,组件的生命周期定义了组件是如何创建和销毁的。通常目标应用的组件包括用户界面(ui),也称为activity组件、还包括服务(service)组件、广播接收器(broadcastreceiver)组件、内容提供者(contentprovider)组件。在本申请中,目标应用的组件生命周期的方法中预设有数据埋点,其中,数据埋点指的是在上述目标应用的组件生命周期的方法中嵌入的一段脚本或代码。为了便于理解上述目标应用的组件以及组件的生命周期的含义,这里以activity组件为例展开进一步的描述:一个activity组件可以表示带有用户界面的单个页面。例如,一个电子邮件应用程序可能有一个activity组件用来显示一个新邮件列表,一个写电子邮件的activity组件,以及另一个阅读电子邮件的activity组件。虽然这些activity组件是在电子邮件应用程序中为了形成一个有凝聚力的用户体验而协同工作,但每个都是独立于其他的组件。activity组件的生命周期通常有以下过程:oncreate()、onstart()、onresume()、onpause()、onstop()、ondestroy(),其中,以oncreate()为例,oncreate()表示当activity组件第一次加载时执行。具体关于activity组件其余的生命周期这里不一一详细展开描述。示例性的,可以理解,目标目标应用里用到的activity组件可以继承于同一个基类baseactivity,可以在baseactivity生命周期的方法里比如oncreate(),onwindowfocuschanged()方法里进行数据埋点,示例性的,该数据埋点,具体是activity组件从加载到绘制的时长数据,当该时长数据采集到后,传给收集数据的对象,该activity的绘制任务此时就结束了。需要说明的是,上述只是以activity组件的oncreate()方法为例,具体不对本申请构成限定,在实际应用场景中,用户可根据实际需求,对数据埋点的嵌入至组件的哪个方法中以获取目标应用的某种性能数据,这里不做限定。例如,示例性的,在一些应用场景中,也就是在一些目标应用中,还可以在activity组件中嵌入视图元素(fragment),视图元素(fragment)是一种可以嵌入在activity组件当中的(用户界面)片段,在一些实施方式中,还可以在fragment创建时,记录一个开始时间,接着在该目标应用进程的ui主线程里,在fragment当前的绘制任何后加一个其他任务,当该fragment的绘制结束后,由于安卓框架决定ui主线程,会优先调用fragment的绘制任务,紧接着才会调用添加的其他任务,当其他任务执行时,获取到一个结束时间,我们就可以获取到该fragment从加载到绘制结束的时长。s20、当目标应用运行过程中触发到数据埋点时,根据数据埋点确定性能数据收集项目;如前面所述,通过在目标应用的组件的生命周期的方法中预设有数据埋点的方式,这样,当用户使用终端设备运行上述目标应用程序时,若执行预设有数据埋点的组件生命周期方法时,会触发到组件生命周期方法中的数据埋点,这是终端设备可根据数据埋点确定出性能数据收集项目。需要说明的是,性能数据收集项目指的是所需获取的性能数据种类,可以包括使用目标应用的使用性能数据,也可以是目标应用的业务性能数据,示例性的,上述使用性能数据具体可以包括但不局限于:目标应用的首页加载时长、目标应用的冷启动到首页加载出来的时长、用户登录目标应用后到下一个页面显示出来之间的时长,也就是不同页面跳转之间的时长、同一页面不同标签页(tab)之间切换所需要的时长,fragment首次创建时间;目标应用切到终端设备后台后,目标应用再次被唤醒打开目标应用的时长、目标应用的冷启动时长、目标应用的热启动时长、目标应用中页面加载的时长,例如目标应用中页面的冷加载时长、目标应用中页面热加载时长等等。上述业务性能数据具体可以包括但不局限于:目标应用中某个按钮(button)被点击了几次,某个页面被打开过了几次等业务性能数据。可以理解,上述示例在这里只是举例说明,在实际应用中,用户可以根据需求,例如着重需要关注目标应用的使用状态进行预设数据埋点,这里不做任何限定。s30、获取性能数据收集项目对应的性能数据;在终端设备得到了性能数据收集项目后,可获取到性能数据收集项目对应的性能数据。具体的性能数据可参阅前述步骤s20中的描述,这里不做限定。s40、将性能数据发送至服务器。在获取了性能数据收集项目对应的性能数据后,终端设备将性能数据发送至服务器,以使服务器可以对性能数据进行调度、展示等处理,从而得知目标应用的使用状态和存在的问题。示例性的,例如目标应用存在多个版本,比如6.x版本,通过上述方法,发现目标应用启动时较慢,通过对网络和页面加载收集性能数据,那么根据获取的性能数据发现是某个时序接口数据返回慢,或是页面层级导致绘制较慢,通过对获取的性能数据进行分析处理后,得到具体的目标应用启动慢的原因,可以对目标应用进行改进,这样到了下一个版本7.x继续进行观察,若发现稳定了,到了8.x版本,就不需要预设获取上述性能数据的数据埋点了,可有效地对应用提供运行时具体运行状态的数据支持。由此可得,本申请提出了一种性能数据发送方法,包括如下主要步骤,终端设备根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,当目标应用运行过程中触发到数据埋点时,根据数据埋点确定性能数据收集项目;终端设备获取性能数据收集项目对应的性能数据,终端设备将性能数据发送至服务器。与传统的方案相比,可以看出,本申请是通过在应用程序的组件生命周期中嵌入数据埋点,这样,在应用执行过程中,一触发到上述数据埋点即可获取数据埋点对应的性能数据并反馈给服务器。由于是嵌入在组件生命周期中的数据埋点,不会占用到额外的运算资源并且收集过程中,用户几乎是无感知的,另一方面可自定义获取所需的性能数据,有效地获取到所需的性能数据,最后分析所用的应用性能数据比较全面,使得分析的准确性得以提高。在一实施方式中,步骤s30中,也即获取性能数据收集项目对应的性能数据,具体包括如下步骤:通过第一线程获取性能数据收集项目对应的性能数据,其中,第一线程为终端设备运行目标应用所用的线程。也就是说,在终端设备获取性能数据收集项目对应的性能数据时,是在目标应用所用的线程进行的,这么做有一个好处就是,终端设备在通过第一线程获取性能数据收集项目对应的性能数据时,通过第一线程获取性能数据收集项目对应的性能数据,更能反应终端设备运行目标应用时的状态,使得获取到的性能数据更能为后续的数据分析提供支持。在一实施方式中,如图3所示,步骤s40中,也即将性能数据发送至服务器,具体包括如下步骤:s41、创建第二线程,第一线程与第二线程为不同的线程;s42、通过第二线程将性能数据发送至服务器。也就是说,在终端设备获取到性能数据收集项目对应的性能数据后,会创建与第一线程,也即运行目标应用的线程不同的第二线程,再通过第二线程将性能数据发送至服务器。这样,由于性能数据已经获取到,通过与运行目标应用的线程不同的第二线程发送性能数据,可以有效地减少对运行目标应用ui主线程的干扰,从而降低终端设备运行目标应用时的使用影响,如降低终端设备运行目标应用的卡顿程度等,从而提高了用户的体验。在一些实施例中,所述通过所述第一线程获取所述性能数据收集项目对应的性能数据之前,所述方法还包括:创建性能数据获取对象以及应用程序运行对象,所述性能数据获取对象以及所述应用程序发送对象装载在所述终端设备中,所述性能数据获取对象与所述应用程序运行对象在第一线程的不同进程中,所述性能数据获取对象与所述应用程序运行对象之间通过进程间通信连接;所述当所述目标应用运行过程中触发到所述数据埋点时,通过第一线程确定所述数据埋点对应的性能数据收集项目,包括:若运行所述目标应用时触发到所述目标应用的组件的方法中预设的数据埋点,则通过所述应用程序运行对象确定所述数据埋点对应的性能数据收集项目;所述通过所述第一线程获取所述性能数据收集项目对应的性能数据,包括:通过所述应用程序运行对象生成数据获取命令;通过所述应用程序运行对象以及所述进程间通信,将所述数据获取指令和性能数据收集项目发送至所述性能数据获取对象,以使得所述性能数据获取对象收到所述性能数据获取命令和性能数据收集项目后,根据所述数据获取命令,获取所述性能数据收集项对应的性能数据。也就是说,在一些应用场景中,终端设备可以创建一性能数据获取对象以及应用程序运行对象,性能数据获取对象以及应用程序运行对象装载在终端设备中,性能数据获取对象与所述应用程序运行对象之间通过进程间通信进行连接,若触发到目标应用的组件生命周期的方法中预设的数据埋点,则确定数据埋点对应的性能数据收集项目并生成数据获取命令,再将获取到的性能数据以及数据获取命令通过性能数据获取对象与所述应用程序运行对象之间的进程间通信发送至性能数据获取对象,其中,上述应用程序运行对象和性能数据获取对象的动作均在第一进程中完成。其中,在一些实施方式中,上述应用程序运行对象与性能数据获取对象可以通过binder机制或本地套接字实现进程间通信,具体不做限定。可以理解,这里提出了一种更为具体的应用场景,是通过创建性能数据获取对象和应用程序运行对象的方式实现性能数据获取和发送的过程。使得各个执行动作分工更为具体,减少对运行目标应用的干扰。在一实施方式中,如图4所示,步骤s30之后,s42之前,也即获取性能数据收集项目对应的性能数据之后,通过第二线程将性能数据发送至服务器之前,还包括如下步骤:通过第一线程确定性能数据的数据类型;通过第一线程,将性能数据分配至数据类型对应的数据对象集合中,其中,不同的数据类型的性能数据分配在不同的数据对象集合中,不同的数据对象集合具有不同的优先级等级。如前述,性能数据的数据类型可以包括业务性能数据和使用业务数据,而业务性能数据和使用业务数据下又有具体的类型,如使用性能数据具体可以包括但不局限于:目标应用的首页加载时长、目标应用的冷启动到首页加载出来的时长等;业务性能数据具体可以包括但不局限于:目标应用中某个按钮(button)被点击了几次,某个页面被打开过了几次等业务性能数据等。因此为了使得后续的发送过程由次重点,在本申请中,在获取到性能数据收集项目对应的性能数据后,终端设备通过第一线程确定性能数据的数据类型,其中,这里的数据类型具体可以是确定性能数据为业务性能数据还是使用业务数据,也可以是指确定是业务性能数据和使用业务数据下的某种具体类型,这里不做限定,可以根据实际需求和性能数据关注重点进行配置。另外,不同的数据类型的性能数据分配在不同的数据对象集合中,不同的数据对象集合具有不同的优先级等级,因此,在终端设备通过第一线程确定性能数据的数据类型后,终端设备通过第一线程将性能数据分配至数据类型对应的数据对象集合中。终端设备将什么数据类型的性能数据分配至哪个数据对象集合,可自定义进行配置,这里不做限定。步骤s42,也即通过第二线程将性能数据发送至服务器,具体包括如下步骤:s421、通过第二线程确定数据对象集合的优先级等级;s422、通过第二线程,按照优先级等级从大到小的顺序确定不同的数据对象集合的发送顺序;s423、通过第二线程,依据发送顺序依次将不同的数据对象集合的性能数据发送至服务器。对于步骤s421-s423,是对终端设备通过所述第二线程将所述性能数据发送至所述服务器的进行一步细化,如前述,由于数据对象集合具有不同优先级等级,因此终端设备在通过第二线程发送性能数据时,先确定数据对象集合的优先级等级,按照数据对象集合的优先级等级从大到小的顺序确定发送顺序,在根据发送顺序发送数据对象集合中的性能数据。为了便于理解,这里以实际例子为例进行说明,比如使用性能数据,在终端获取了该使用性能数据后,可调用a.b(inttype,objectobj)方法,方法里面带了参数类型(type),参数类型为1时,表示这时该方法表示传入一个表示是使用性能数据的埋点类型,参数类型为2时,表示这时该方法表示传入一个表示是业务性能数据的埋点类型,若终端设备处理时发现这个参数类型为1,会把这个使用性能数据放到一个数据发送对象集合a里面,该数据发送对象集合a被定义了个优先级等级为1,若终端设备处理时发现这个参数类型为2,会把这个业务性能数据放到一个数据发送对象集合b里面,该数据发送对象集合a被定义了个优先级等级为2,优先级等级1大于优先级等级2,因此终端设备按照数据发送对象集合优先级等级从大到小的顺序,先发送数据对象集合为1中的使用性能数据。可以理解,这里这么做的效果在于可以根据实际需要关注的性能数据的特点,自定义对性能数据进行发送的方式,提高方案的多样性。在一实施方式中,不同数据类型对应的所述数据对象集合预设有不同的发送间隔;在将所述数据对象集合的性能数据发送至所述服务器时,按照所述数据对象集合预设的发送间隔进行发送。示例性的,比如,优先级等级为1的数据发送对象集合里有数据了,按15秒或16秒发送间隔发送一次的方式进行数据发送,优先级等级为2的集合里按2分钟或3分钟的发送间隔发送一次的方式进行数据发送。示例性的,对重要页面的打开时长,这些页面的打开时长反应了客户使用目标应用的体验度,是很重要的数据,因此可将页面的打开时长的优先级级别定义为1,会优先发送,方便进行数据调度获取数据后,如果发现大批页面的打开时间很长,则可及时反馈至服务器;示例性的,对某个功能的访问次数,对某个功能的访问次数反应了客户对某个功能的使用度,某个功能的访问次数需要很长时间的数值且紧急度对于用户而言较低,所以发送某个功能的访问次数对应的性能数据时的优先级可设置得低些,例如,3-4分钟发送一次。上面的示例只是举例说明,实际因根据自己的应用进行配置,另外需要说明的是,上述发送间隔示例在这里只是举例说明,在实际应用中,可有多种配置方式,这里不做限定。另外需要说明的是,在一些应用场景中,在对数据发送对象集合中的性能数据进行发送时,还可以有其他的发送方式,例如一种是启动发送,示例性的,当目标应用运用启动时,会发送上次未发送完全的由于用户可能会把进程杀掉,导致没法发送完全的性能数据;另外一种是实时发送的方式,是一旦有性能数据产生就需立刻发送的场景,这个使用场景是实时性要求较高的情况下,示例性的,比如定位场景所获取的性能数据。在一实施方式中,如图5所示,步骤s423中,也即通过第二线程,依据发送顺序依次将不同的数据对象集合的性能数据发送至服务器,具体包括如下步骤:s4231、通过第二线程对数据对象集合中的数据进行压缩并加密;s4232、通过第二线程,依据发送顺序依次将不同的数据对象集合经过压缩并加密的性能数据发送至服务器。对于步骤s4231-s4232,可以理解,为了使得减少终端设备发送性能数据的负担,以及服务器接收性能数据的负担,有必要对发送的性能数据进行压缩,从而降低性能数据的大小,除了可以降低发送或接收负担外,还可以减少带宽,另外,还可以进步一对性能数据做加密,防止性能数据被篡改,从而影响性能数据的真实性,为后续的性能数据分析提供真实反应终端设备使用目标应用的真实使用状况。需要说明的是,在一些实施例中,服务器接收到性能数据后,性能数据解压解密后,经过解压解密后的性能数据就可进入服务器提供的大数据平台。这时调度平台根据不同维度对服务器中大数据平台的性能数据进行分析统计,比如计算某一时期内有多少用户登陆了我们的应用;或是按每天某个特殊指标,指标数据从大到小排序后等等性能数据。由于是海量的性能数据,为提高性能数据的使用性,使用时需要通过调度平台提前进行数据调度的过程,并将调度后的性能数据存储至数据库中。其中,调度平台通过服务器或服务器集群的形式实现,在本申请中,需要在对大数据平台中的性能数据进行调度前后做相应的操作,例如,上述相应的操作包括但不局限于:根据之前已经调度生成的结果,判断该次调度需不需要执行;可以在不同的时段执行不同结构化语言(structuredquerylanguage,sql);可以在调度前就动态指定调度后的性能数据。示例性的,调度平台通过解析特殊注释的sql来实现上述功能,当调度平台确定特殊的注释后会在调度前或后执行该注释对应的任务,示例性的:可以配置如下注释:check=db|select1fromdualwhereto_char(sysdate,'yyyymmdd')=${wend-1d|yyyymmdd;当调度平台调度服务器中的性能数据时发现上面这个注释后,就说明需要在的数据库里里,执行sql,根据有无返回结果,判断调度时间是否是周六,若调度时间不是周六,则调度不会被执行;另外,还可以定义注释来对调度后的性能数据进行监控,示例性的,可以配置如下注释:late_check=db|select1fromtable,limittablewheretable.label=limittable.labelandtable.value>limittable.value;也就是说,当性能数据调度结束后,就说明需要在指定的数据库里,调度平台对调度后的性能数据进行监控,当发现数据库中有性能数据超预设阀值(limittable)时,会根据预先配置的邮件列表,其中,邮件列表包含有性能数据对应的相关负责人的邮箱信息。调度平台自动向相关负责人发送邮件提醒,在一些实施例中,调度后的性能数据可通过展示平台进行展示,展示平台可由具有信息展示装置的终端设备,例如电脑来实现,展示平台从数据库中获取性能数据并通过窗口的方式进行展示;本申请实施例可在预定整体概述窗口中,对从调度平台中所获取的性能数据的整体情况,以设定概述图表进行展示,从而展示出性能数据的整体概述图表;并在各类型性能数据的窗口中,以设定图表对相应类型的性能数据进行展示,从而展示出各种类型的性能数据的情况图表,另外,展示平台还可以根据所获取的性能数据生成报表,用户可以通过订阅的方式关注该报表,当该报表的数据源有更新的时候,用户会收到展示平台发送的邮件通知,并且制作好的报表,可以按单独报表或多个报表的场景方式进行发布,只需将发布后报表的统一资源定位符(uniformresourelocator,url),提供给用户,用户即可就可以访问上述报表。应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。在一实施例中,提供一种性能数据发送装置,上述性能发送装置可集成与终端设备中或作为终端设备,以实现上述方法实施例中,终端设备的功能。该性能数据发送装置与上述实施例中性能数据发送方法一一对应。如图6所示,该性能数据发送装置60包括运行模块601、确定模块602、获取模块603创建模块604和发送模块605。各功能模块详细说明如下:运行模块601,用于根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,所述目标应用的组件为所述目标应用对应的程序的基本构建块,所述数据埋点为在所述组件的生命周期的方法中嵌入的代码或脚本;确定模块602,用于当运行模块602运行目标应用的运行过程中触发到数据埋点时,通过第一线程确定所述数据埋点对应的性能数据收集项目;获取模块603,用于通过所述第一线程获取确定模块602确定的所述性能数据收集项目对应的性能数据,其中,所述第一线程为运行所述目标应用所用的线程;创建模块604,用于创建第二线程,所述第一线程与所述第二线程为不同的线程;发送模块605,用于通过创建模块604创建的所述第二线程将所述获取模块603获取的性能数据发送至服务器。在一实施例中,确定模块602还用于:获取性能数据收集项目对应的性能数据之后,通过第一线程确定性能数据的数据类型;通过第一线程,将性能数据分配至数据类型对应的数据对象集合中,其中,不同的数据类型的性能数据分配在不同的数据对象集合中,不同的数据对象集合具有不同的优先级等级;发送模块605还具体用于:通过第二线程确定数据对象集合的优先级等级;通过第二线程,按照优先级等级从大到小的顺序确定不同的数据对象集合的发送顺序;通过第二线程,依据发送顺序依次将不同的数据对象集合的性能数据发送至服务器。在一实施例中,不同数据类型对应的数据对象集合预设有不同的发送间隔;在将数据对象集合的性能数据发送至服务器时,按照数据对象集合预设的发送间隔进行发送。在一实施例中,发送模块605还具体用于:通过第二线程对数据对象集合中的数据进行压缩并加密;通过第二线程,依据发送顺序依次将不同的数据对象集合经过压缩并加密的性能数据发送至服务器。在一些实施例中,创建模块还用于:通过第一线程获取性能数据收集项目对应的性能数据之前,创建性能数据获取对象以及应用程序运行对象,性能数据获取对象以及应用程序发送对象装载在终端设备中,性能数据获取对象与应用程序运行对象在第一线程的不同进程中,性能数据获取对象与应用程序运行对象之间通过进程间通信连接;确定模块具体用于:若运行目标应用时触发到目标应用的组件的方法中预设的数据埋点,则通过应用程序运行对象确定数据埋点对应的性能数据收集项目;获取模块具体用于:通过应用程序运行对象生成数据获取命令;通过应用程序运行对象以及进程间通信,将数据获取指令和性能数据收集项目发送至性能数据获取对象,以使得性能数据获取对象收到性能数据获取命令和性能数据收集项目后,根据数据获取命令,获取性能数据收集项对应的性能数据。在一实施例中,应用程序运行对象与性能数据获取对象通过binder机制或本地套接字实现进程间通信。关于性能数据发送装置的具体限定可以参见上文中对于性能数据发送方法的限定,在此不再赘述。上述性能数据发送装置中的各个模块可全部或部分通过软件、硬件及其组合来实现,上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一些实施例中,如图7所示,本申请还提供了一种性能数据处理系统,该性能数据处理系统包括上述终端设备701、服务器702、调度平台703以及展示平台704,具体的,上述终端设备以及各个平台之间所实现的功能或步骤可参阅前述描述,这不重复赘述。在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种性能数据发送方法。在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,组件为目标应用对应的程序的基本构建块,数据埋点为在组件的生命周期的方法中嵌入的代码或脚本;当目标应用运行过程中触发到数据埋点时,通过第一线程确定数据埋点对应的性能数据收集项目;通过第一线程获取性能数据收集项目对应的性能数据,其中,第一线程为运行目标应用所用的线程;创建第二线程,第一线程与第二线程为不同的线程;通过第二线程将性能数据发送至服务器。需要说明的是,本申请提供的计算机设备中,计算机程序被处理器执行时实现的其他步骤,可对应参阅前述方法实施例中的描述,这里不一一重复赘述。可以看出,是通过在应用程序的组件生命周期中嵌入数据埋点,这样,在应用执行过程中,一触发到上述数据埋点即可获取数据埋点对应的性能数据并反馈给服务器。由于是嵌入在组件生命周期中的数据埋点,不会占用到额外的运算资源并且收集过程中,用户几乎是无感知的,另一方面可自定义获取所需的性能数据,有效地获取到所需的性能数据,最后分析所用的应用性能数据比较全面,使得分析的准确性得以提高。在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:根据用户指令运行目标应用,目标应用的组件生命周期的方法中预设有数据埋点,组件为目标应用对应的程序的基本构建块,数据埋点为在组件的生命周期的方法中嵌入的代码或脚本;当目标应用运行过程中触发到数据埋点时,通过第一线程确定数据埋点对应的性能数据收集项目;通过第一线程获取性能数据收集项目对应的性能数据,其中,第一线程为运行目标应用所用的线程;创建第二线程,第一线程与第二线程为不同的线程;通过第二线程将性能数据发送至服务器。需要说明的是,本申请提供的计算机可读存储介质中,计算机程序被处理器执行时实现的其他步骤,可对应参阅前述方法实施例中的描述,这里不一一重复赘述。可以看出,是通过在应用程序的组件生命周期中嵌入数据埋点,这样,在应用执行过程中,一触发到上述数据埋点即可获取数据埋点对应的性能数据并反馈给服务器。由于是嵌入在组件生命周期中的数据埋点,不会占用到额外的运算资源并且收集过程中,用户几乎是无感知的,另一方面可自定义获取所需的性能数据,有效地获取到所需的性能数据,最后分析所用的应用性能数据比较全面,使得分析的准确性得以提高。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1