性能数据的采集方法、展示方法、电子设备和客户端技术

技术编号:21115550 阅读:22 留言:0更新日期:2019-05-16 08:56
本申请实施方式公开了一种性能数据的采集方法、展示方法、电子设备和客户端。所述方法包括:初始化栈帧缓存容器、内存缓存区和采样线程。所述采样线程用于控制其他线程的数据采集和运行,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。所述方法可以记录应用方法执行过程中的信息,为程序开发人员带来了便利。

【技术实现步骤摘要】
性能数据的采集方法、展示方法、电子设备和客户端
本申请涉及计算机
,特别涉及一种性能数据的采集方法、展示方法、电子设备和客户端。
技术介绍
生活中,人们使用各种软件。比如,购物软件、天气预报软件、阅读软件等等。采集应用方法在执行过程中的性能数据,对于程序开发过程和调试,都有较为重要的作用。对于iOS客户端应用方法级的Profile方案,主要有两类方案;方案一是Apple提借供了针对iOS客户端应用方法维度的性能分析工具TimeProfile;该工具在客户端应用编译阶段通过在方法执行前后计时的方法统计方法的执行耗时并进行聚合。方案二是一些开源社区提供方案,基于Objective-C的运行时机制,在Objective-C消息转发(即方法调用)前后通过计时的方式记录Objective-C方法调用的耗时。现有方案至少存在以下不足:记录方法耗时的过程中没有考虑到方法执行过程中CPU调度的问题,而在真实运行场景中,对于分析锁、线程调度效率等问题至关重要。
技术实现思路
本申请实施方式提供一种性能数据的采集方法、展示方法、电子设备和客户端。本说明书实施方式提供一种性能数据的采集方法,所述方法包括:在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间、CPU时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。本说明书提供一种电子设备,包括:容器初始化模块,用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;缓存区初始化模块,用于初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;线程初始化模块,用于初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;采样模块,用于利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。本说明书提供一种电子设备,包括:处理器;所述处理器用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。本说明书提供一种信息展示方法,包括:展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程;在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。本说明书提供一种客户端,包括:第一展示模块,用于展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程;第二展示模块,用于在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。本说明书提供一种客户端,包括:显示器、输入设备;所述显示器用于展示包括线程标识和时间轴的第一界面,其中,所述线程标识用于表示线程;在接收到所述输入设备输入的针对所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。由以上本说明书实施方式提供的技术方案可见,本说明书实施方式提供的性能数据采集方法可以通过将间隔采集性能数据的方式,采集应用方法执行过程中基于进出栈时间、CPU时间的性能数据。如此,为进一步分析程序的问题,提供了较为详细的数据基础。附图说明为了更清楚地说明本说明书实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本说明书实施方式提供的一种性能数据的采集方法的流程示意图;图2为本说明书实施方式提供的一种性能数据的采集方法中不同时刻的最后一个栈帧数组的示意图;图3为本说明书实施方式提供的一种性能数据的采集方法的流程示意图;图4为本说明书实施方式提供的一种电子设备的模块示意图;图5为本说明书实施方式提供的一种信息展示方法的流程图;图6为本说明书实施方式提供的一种信息展示方法的界面示意图;图7为本说明书实施方式提供的一种信息展示方法的界面示意图;图8为本说明书实施方式提供的一种客户端的模块图;图9为本说明书实施方式提供的一种性能数据的采集方法的流程示意图。具体实施方式为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施方式中的附图,对本说明书实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本说明书一部分实施方式,而不是全部的实施方式。基于本说明书中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都应当属于本说明书保护的范围。请参阅图1。在一个具体的场景示例中,本说明书实施方式提供一种可以在应用方法运行过程中,采集应用方法的性能数据的软件。应用方法运行的操作系统可以是IOS系统、Android系统、Windows系统等,在此不再列举。优选的,所述软件运行于IOS系统。在本场景示例中,可以先初始化栈帧缓存容器和内存缓存区。所述栈帧缓存容器可以用于存储应用方法的线程中最后一个栈帧数组。内存缓存区用于记录应用方法中方法信息的进出栈时间。具体的,可以初始化一个Map作为栈帧缓存容器。在本场景示例中,电子设备可以生成一个采样线程,该采样线程用于采集应用方法执行的线程的最后一个栈帧数组。应用方法执行时可以具有多个线程,例如线程1、线程2等。在本场景示例中,采样线程可以每间隔指定时间进行一次采样记录。该指定时间可以是2毫秒、5毫秒等等。在本场景示例中,该采样线程可以暂停应用方法的全部或部分线程。如此可以采集每个线程处于暂停时的最后一个栈帧数组。进而实现记录应用方法运行过程中的最后一个栈帧数组。具体的,采样线程可以暂停线程1和线程2的执行。在本场景示例中,采样线程在暂停线程之后,读取每个线程的程序指针指向的地址。该程序指针指向的地址可以为每个线程的执行数据集的访问地址。该执行数据集可以采用堆栈的数据结构实现,使得程序指针可以为指向栈顶的地址。程序指针指向的地址是线程调用的方法的访问地址。使得可以通过方法的访问地址形成线程的方法信息。并由所述方法信息形成了线程的最后一个栈帧数组。在本场景示例中,采样线程可以从线程的执行数据集中读取得到最后一个栈帧数组,将该栈帧数组放入所述Map中。为了便于运算,将最后一个栈帧数组中的方法信息放入Map时,可以相较于堆栈中的排序为逆序排序。在本场景示例中,请参阅图2。例如采本文档来自技高网
...

【技术保护点】
1.一种性能数据的采集方法,其特征在于,所述方法包括:在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间、CPU时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。

【技术特征摘要】
1.一种性能数据的采集方法,其特征在于,所述方法包括:在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间、CPU时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。2.根据权利要求1所述的方法,其特征在于,所述性能数据至少包括以下至少之一:方法执行耗时、方法执行CPU耗时、线程调度数据。3.根据权利要求1所述的方法,其特征在于,所述通过间隔采样的方式,得到所述应用方法执行的性能数据,包括:暂停执行所述应用方法的线程;将所述线程的最后一个栈帧数组存储入所述栈帧缓存容器;所述最后一个栈帧数组包括所述线程所执行的方法信息;将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比;其中,存储的栈帧数组与所述最后一个栈帧数组具有不同的生成时间;在二者不同的情况下,记录发生变更的方法信息的进出栈时间。4.根据权利要求3所述的方法,其特征在于,在读取所述线程的最后一个栈帧数组的步骤中包括:读取所述执行线程的程序指针指向的栈帧数组;其中,所述程序指针指向所述应用方法当前执行的栈帧数组。5.根据权利要求3所述的方法,其特征在于,将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比,包括:将存储的栈帧数组中生成时间与所述最后一个栈帧数组较为接近的栈帧数组与所述最后一个栈帧数组进行对比。6.根据权利要求3所述的方法,其特征在于,所述进出栈时间包括执行开始时间;所述记录发生变更的方法信息的进出栈时间,包括:在发生变更的方法信息为所述最后一个栈帧数组相较于之前存储的所述栈帧数组增加了方法信息的情况下,将当前时间作为所述方法信息的执行开始时间进行记录。7.根据权利要求3所述的方法,其特征在于,所述进出栈时间包括执行结束时间;所述记录发生变更的方法信息的进出栈时间,包括:在发生变更的方法信息为所述最后一个栈帧数组相较于之前存储的所述栈帧数组减少了方法信息的情况下,将当前时间作为所述方法信息的执行结束时间进行记录。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:展示包括线程标识和时间轴的第一界面;所述线程标识用于表示所述线程;在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的所述进出栈时间。9.根据权利要求8所述的方法,其特征在于,在所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。10.根据权利要求8所述的方法,其特征在于,所述第一界面的时间轴具有第一度量单位;所述第二界面的时间轴具有第二度量单位;所述第一度量单位和所述第二度量单位不同。11.根据权利...

【专利技术属性】
技术研发人员:刘韩松鲁强贾乐
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1