CN109753414A - 性能数据的采集方法、展示方法、电子设备和客户端 - Google Patents
性能数据的采集方法、展示方法、电子设备和客户端 Download PDFInfo
- Publication number
- CN109753414A CN109753414A CN201711055145.1A CN201711055145A CN109753414A CN 109753414 A CN109753414 A CN 109753414A CN 201711055145 A CN201711055145 A CN 201711055145A CN 109753414 A CN109753414 A CN 109753414A
- Authority
- CN
- China
- Prior art keywords
- thread
- time
- stack frame
- frame number
- number group
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请实施方式公开了一种性能数据的采集方法、展示方法、电子设备和客户端。所述方法包括:初始化栈帧缓存容器、内存缓存区和采样线程。所述采样线程用于控制其他线程的数据采集和运行,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。所述方法可以记录应用方法执行过程中的信息,为程序开发人员带来了便利。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种性能数据的采集方法、展示方法、电子设备和客户端。
背景技术
生活中,人们使用各种软件。比如,购物软件、天气预报软件、阅读软件等等。
采集应用方法在执行过程中的性能数据,对于程序开发过程和调试,都有较为重要的作用。对于iOS客户端应用方法级的Profile方案,主要有两类方案;方案一是Apple提借供了针对iOS客户端应用方法维度的性能分析工具Time Profile;该工具在客户端应用编译阶段通过在方法执行前后计时的方法统计方法的执行耗时并进行聚合。方案二是一些开源社区提供方案,基于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。例如采样线程暂停线程的时间点为T0。此时读取得到线程1的最后一个栈帧数组为Frame0。将Frame0存入数组。此时,可以将暂停时间作为Frame0的执行开始时间,存入内存缓存区。
在本场景示例中,采样线程读取在本次暂停之前,针对线程采集的最后一个栈帧数组。为了便于区分,将本次暂停之前Map中的最后一个栈帧数组命名为栈帧数组。采样线程可以将本次读取的最后一个栈帧数组与时间最接近的栈帧数组进行对比。从可以根据最后一个栈帧数组与栈帧数组的区别,确认得出执行完成的方法信息的进出栈时间。
在本场景示例中,采样线程没有找到线程1的栈帧数组。可以为采样线程初次读取线程1的栈帧数组。此时可以将从线程中读取的栈帧数组存入Map之后,结束本次方法。存入Map的新读取的栈帧数组作为后续对比的栈帧数组。采样线程可以恢复应用方法的线程的执行。
在本场景示例中,在恢复执行之后,达到指定时间的间隔,采样线程可以被唤醒,暂停线程,此时的时间点为T1。采样线程可以如前所述读取线程的最后一个栈帧数组。例如,采样线程读取线程1的最后一个栈帧数组,包括Frame0和Frame1,存入Map。将最后一个栈帧数组与栈帧数组进行比较得出多出了Frame1。可以认为,Frame0调用了Frame1。Frame1开始执行,T1可以为Frame1的执行开始时间,存入内存缓存区。
在本场景示例中,在恢复执行之后,达到指定时间的间隔,采样线程可以被唤醒,暂停线程,此时的时间点为T2。采样线程可以如前所述读取线程的最后一个栈帧数组。例如,采样线程读取线程1的最后一个栈帧数组,包括Frame0、Frame2和Frame3。相较于T1时刻,缺少了Frame1,可以认为Frame1已经执行结束,可以将T2时刻记录为Frame1的执行结束时间。以及读取操作系统提供的Frame1的CPU时间,将CPU时间和Frame1的执行开始时间和执行结束时间关联记录,存入内存缓存区。相较于T1时刻增加了Frame2和Frame3,可以认为Frame0调用Frame1结束之后,调用了Frame2,进一步的Frame2调用了Frame3。可以将T2时刻作为Frame2和Frame3的执行开始时间,存入内存缓存区。
在本场景示例中,在记录方法的执行开始时间和执行结束时间时,也可以将方法的父方法的访问地址存入内存缓存区。如此可以便于分析调用关系。方法的父方法可以是方法与方法之间,其中一个方法被另一个方法调用,该另一个方法可以为父方法,被调用的方法可以为子方法。
在本场景示例中,采样线程针对线程完成读取最后一个栈帧数组之后,可以使线程恢复执行。
在本场景示例中,针对采样线程设置指定的采样次数,如此采样线程每进行一次采样之后,可以进入休眠状态,并间隔指定时间后被唤醒进行采样。在执行达到所述指定次数之后,可以结束采样的工作。
本说明书实施方式提供一种性能数据的采集方法,可以应用于电子设备。所述电子设备可以具备一定的运算功能。具体的,电子设备可以是服务器,也可以为客户端。
在本实施方式中,所述服务器可以是具有运算和网络交互功能的电子设备;也可以为运行于该电子设备中,为数据处理和网络交互提供业务逻辑的软体。进一步的,可以并不具体限定服务器的数量。服务器可以为一个服务器,还可以为几个服务器,或者,若干服务器形成的服务器集群。
在本实施方式中,客户端可以为具有显示、运算和网络访问功能的电子设备。具体的,例如,客户端可以为台式电脑、工作站、平板电脑、笔记本电脑。或者,客户端也可以为能够运行于上述电子设备中的软体。
请参阅图9。所述性能数据的采集方法可以包括以下步骤。
步骤S30:在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组。
在本实施方式中,应用方法可以是指为了得到某种结果而可以由具有信息处理能力的电子设备执行的代码化指令序列。应用方法中可以通过代码定义了多个方法。每个方法可以具有方法名和方法内容。所述方法名可以用于表示所述方法。所述方法内容可以表达执行该方法时进行的逻辑运算。为了实现应用方法整体的功能目标,应用方法中的方法可以分别用于解决不同的问题,或者,实现不同的目的。
在本实施方式中,线程可以是应用方法执行过程中的最小单元,可以是被电子设备独立调度和分派的基本单位。应用方法在被电子设备执行过程中,可以具有多个线程。每个线程可以执行应用方法中的一个或几个方法。每个线程所执行的方法之间可以具有关联,也可以没有关联。
在本实施方式中,栈帧缓存容器可以是一个用于存储数据的数据结构。栈帧缓存容器用于存储栈帧数组,使得栈帧缓存容器的具体数据结构,可以相应于栈帧数组进行设置。栈帧缓存容器通过存储栈帧数组,实现可以通过分析栈帧数组中的方法信息,得出应用方法的不同方法之间的调用关系。以及,通过分析比对得出应用方法中的方法的进出栈时间。
在本实施方式中,栈帧数组可以包括线程执行的方法信息,其可以包括线程正在执行的方法信息,也可以包括线程将要执行的方法信息。线程可以具有一个栈帧数组,该栈帧数组中可以存储有线程正在执行和/或将要执行的方法的调用地址。根据调用地址可以调用相应的方法。所述方法信息可以是方法的方法名,也可以是方法的调用地址。实现该栈帧数组的方式,可以采用堆栈结构,当然在一些情况下也可以采用队列等,在此不做具体限定。
步骤S32:初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间、CPU时间。
在本实施方式中,内存缓存区可以是一个虚拟对象,其用于存储和管理数据。内存缓存区的初始化可以是针对内存缓存区进行程序的实例化。在进行初始化时,可以直接为内存缓存区分配内存的物理存储空间。也可以为,在初始化时,先不分配内存的物理存储空间,在内存缓存区需要实际存储数据时,才进行分配物理存储空间。
在本实施方式中,内存缓存区用于记录采集到的进出栈时间、CPU时间,从而为后续进行分析提供数据基础。进一步的,所述性能数据至少包括以下至少之一:方法执行耗时、方法执行CPU耗时、线程调度数据。其中,方法执行耗时可以为方法的开始执行时间与结束执行时间之间的差值。方法执行CPU耗时可以是系统提供的方法得到的CPU时间的总和。线程调度数据可以是方法之间的调用关系。
步骤S34:初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行。
在本实施方式中,初始化采样线程可以为创建一个线程作为采样线程。该采样线程可以执行实现采样功能的方法。通过采样线程可以通过控制应用方法的线程,实现针对应用方法的执行过程进行数据采集。具体的,采样线程可以控制应用方法的线程暂停执行,或者恢复执行,以及读取应用方法的线程的数据。
步骤S36:利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。
在本实施方式中,可以采用间隔采样的方式,实现可以结合每次采样的时间,确定应用方法的执行的相关耗时情况。从而,可以实现针对应用方法的性能数据进行记录。再者,通过间隔采样的方法,可以降低因采样带来的工作负荷,提升系统的运行效率。在本实施方式中,间隔采样的方式可以为间隔一定时间进行一次采样。
请参阅图2。在一个实施方式中,通过间隔采样的方式,得到所述应用方法执行的性能数据可以包括以下步骤。
步骤S10:暂停执行所述应用方法的线程。
在本实施方式中,暂停应用方法的线程,可以为暂停应用方法的全部线程,也可以为暂停应用方法的部分线程。在一些情况下,针对应用方法的全部方法执行过程中的信息进行记录时,可以暂停应用方法的全部线程,当然,若针对部分方法执行过程中的信息进行记录时,可以暂停该部分方法所在的线程。
步骤S12:将所述线程的最后一个栈帧数组存储入所述栈帧缓存容器;所述最后一个栈帧数组包括所述线程所执行的方法信息。
在本实施方式中,在线程被暂停之后,其最后一个栈帧数组会维持不变。如此,便可以得到在执行线程处于暂停时间点时的栈帧数组。由于,该栈帧数组用于存放相应线程最新的执行情况,使得获得该栈帧数组便可以确定该执行线程执行应用方法中的方法的最新进度。
步骤S14:将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比;其中,存储的栈帧数组与所述最后一个栈帧数组具有不同的生成时间。
步骤S16:在二者不同的情况下,记录发生变更的方法信息的进出栈时间。
在本实施方式中,存储的栈帧数组可以是线程在本次暂停时间之前,针对线程进行暂停时所记录的最后一个栈帧数组。
在本实施方式中,由于最后一个栈帧数组与之前存储的栈帧数组,分别可以表示线程不同时间的执行状态。通过将二者进行对比,便可以分析在本次暂停和所述栈帧数组的时间点之间,线程所执行的方法是否发生变化。
在本实施方式中,进出栈时间可以是线程所调用的方法的状态发生改变时的时间。方法的状态发生改变可以包括但不限于:方法被线程开始调用,或者方法被线程结束调用。具体的,例如,方法的调用地址进入线程的执行数据集,可以为方法开始调用;方法的调用地址从执行数据集中移除,可以为方法结束调用。
在本实施方式中,在发现不同时,可以将当前的系统时间,或者暂停时的系统时间作为进出栈时间的具体取值。即一个方法开始调用,可以记录该方法的执行开始时间为当前系统时间,也可以为暂停时系统时间;或者,一个方法结束调用,可以记录该方法的执行结束时间为当前系统时间,也可以为暂停时系统时间。
本申请实施方式,可以通过将线程处于暂停时的最后一个栈帧数组,与前一次暂停时的栈帧数组进行对比,从而将暂停的时间或者当前时间作为进出栈时间的具体取值。如此,可以记录应用方法中的方法,在被执行时的信息。为进一步分析应用方法的问题,提供了较为详细的数据基础。
在一个实施方式中,在读取所述线程的最后一个栈帧数组的步骤中可以包括:读取所述执行应用方法的程序指针指向的最后一个栈帧数组;其中,所述程序指针指向所述应用方法当前执行的最后一个栈帧数组。
在本实施方式中,每个线程可以具有程序指针,该程序指针可以指向线程当前执行的方法的调用地址。可以根据该程序指针得出执行程序对应的执行数据集的访问地址,进而根据程序指针顺次读取执行数据集中其余的方法的调用地址,实现读取最后一个栈帧数组。
在一个实施方式中,将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比可以包括:将存储的栈帧数组中生成时间与所述最后一个栈帧数组较为接近的栈帧数组与所述最后一个栈帧数组进行对比。
在本实施方式中,可以每间隔指定时间,对线程进行一次信息记录。如此,可以实现针对线程存储有在本次执行采样之前,记录的最后一个栈帧数组,即存储的栈帧数组。将本次采样过程采集的线程的最后一个栈帧数组与存储的栈帧数组进行比对时,采用的栈帧数组与本次采样过程的最后一个栈帧数组的生成时间较为接近,如此可以在时间连贯维度上较好的反应线程所调用的方法信息的状态。进而使得记录的方法的执行开始时间和执行结束时间趋于接近方法的实际执行的开始时间和结束时间。
在一个实施方式中,所述进出栈时间包括执行开始时间;所述记录发生变更的方法信息的进出栈时间可以包括:在发生变更的方法信息为所述最后一个栈帧数组相较于之前存储的所述栈帧数组增加了方法信息的情况下,将当前时间作为所述方法信息的执行开始时间进行记录。
在本实施方式中,当最后一个栈帧数组与存储的栈帧数组进行比较,得出最后一个栈帧数组新增了方法信息。可以认为线程在得出存储的栈帧数组的时间之后,调用了该方法。可以将当前时间作为该方法的执行开始时间。
在本实施方式中,在应用方法执行过程中,可以多次执行采样的过程。相隔两次执行采样的时间间隔越小,记录执行开始时间越趋于接近方法的实际开始执行时间。
在一个实施方式中,所述进出栈时间包括执行结束时间;所述记录发生变更的方法信息的进出栈时间可以包括:在发生变更的方法信息为所述最后一个栈帧数组相较于所述栈帧数组减少了方法信息的情况下,将当前时间作为所述方法信息的执行结束时间进行记录。
在本实施方式中,当最后一个栈帧数组与存储的栈帧数组进行比较,得出最后一个栈帧数组减少了方法信息。可以认为线程在得出存储的栈帧数组的时间之后,该方法执行结束。可以将当前时间作为该方法的执行结束时间。
在本实施方式中,在应用方法执行过程中,可以多次执行采样的过程。相隔两次执行所述采样的时间间隔越小,记录执行结束时间越趋于接近方法的实际结束执行时间。
在一个实施方式中,所述性能数据的采集方法还可以包括:将所述线程的最后一个栈帧数组存储为所述线程的栈帧数组。
在本实施方式中,将本次得到的最后一个栈帧数组进行存储,作为下一次执行采样时进行对比的栈帧数组。使得,所述采样的过程可以依照一定的执行频率循环执行。实现可以趋于连续记录应用方法在一段时间内的方法执行情况。
在一个实施方式中,所述性能数据的采集方法还包括:在存储的栈帧数组中没有与所述线程相应的栈帧数组时,将所述最后一个栈帧数组存储为所述线程的栈帧数组。
在本实施方式中,存储的栈帧数组中没有线程对应的栈帧数组,可以为线程被生成之后,首次被执行采样。此时,可以将线程的最后一个栈帧数组直接存储,作为后续执行采样时进行比对的栈帧数组。
请参阅图4。本说明书实施方式还提供一种电子设备,所述电子设备可以包括以下模块。
容器初始化模块,用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组。
缓存区初始化模块,用于初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间。
线程初始化模块,用于初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行。
采样模块,用于利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。
在本实施方式中,所述电子设备各模块具体内容,以及实现的功能和效果,可以参照前述实施方式对照解释。
本说明书实施方式还提供一种电子设备。所述电子设备包括:处理器。所述处理器用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。
在本实施方式中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。
本说明书实施方式方式提供的电子设备,其处理器和存储器实现的具体功能,可以与本说明书中的前述实施方式方式相对照解释。
本说明书实施方式还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被执行时实现:在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。
在本实施方式中,所述计算机存储介质包括但不限于随机存取存储器(RandomAccess Memory,RAM)、只读存储器(Read-Only Memory,ROM)、硬盘(Hard Disk Drive,HDD)或者存储卡(Memory Card)、光盘。所述计算机存储介质可以用于存储计算机程序指令。
在本实施方式中,所述计算机程序指令实现的功能和效果,可以参照其它实施方式对照解释。
请参阅图5。本申请实施方式还提供一种信息展示方法,可以包括以下步骤。
步骤S20:展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程。
请参阅图6。在本实施方式中,线程标识可以用于表示一个线程。线程标识可以为线程的名称等。
在本实施方式中,将线程标识和时间轴对应展示,可以较为清晰的展现出,各线程随着时间的进度,具体被执行的情况。具体的,例如,可以以展示出线程的整体存在时间、CPU的时间等。
步骤S22:在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
请参阅图7。本实施方式中,在线程标识发生第一触发事件的情况下,展示第二界面。第一界面可以较为宏观的展示各线程的执行情况,第二界面可以针对某一个线程具体的信息进行展示。
在本实施方式中,第一触发事件可以是外部输入设备发生的操作事件。具体的,例如,用户通过鼠标进行选择,通过键盘进行选择,通过语音输入等,实现该操作事件。
在本实施方式中,第一界面和第二界面展示的内容,可以为根据性能数据的采集方法记录的栈帧数组生成。并可以进一步的,在展示的第一界面和第二界面的内容中,将因执行采样而花费的时间去除。如此,展示的时间可以表示线程,或者方法信息,在执行过程中整体用时,或者方法执行CPU耗时等。
在一个实施方式中,所述第一界面的时间轴具有第一度量单位;所述第二界面的时间轴具有第二度量单位;所述第一度量单位和所述第二度量单位不同。
在本实施方式中,第一度量单位与第二度量单位不相同,如此,可以使得其中一个可以展示更加精确一些的细节。具体的,例如,第二度量单位的小于第一度量单位,如此,在展示第二界面中的方法信息时,可以更加精确的展示每个方法具体的执行情况。
在一个实施方式中,所述信息展示方法还可以包括:在所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
在本实施方式中,第二触发事件可以为鼠标点击、鼠标停留、鼠标滑过、键盘选择或者语音输入操作等等。
在本实施方式中,在接近方法信息的位置显示实际执行时间和CPU占用时间的方式,可以通过悬浮窗的方式,或者弹窗的方式。
在本实施方式中,实际执行时间可以为方法信息在线程的执行数据集中的存续时间。时间执行时间可以为方法信息的执行结束时间与执行开始时间之间的差值。
在本实施方式中,CPU占用时间可以为操作系统提供的,线程中的一个方法执行过程中实际占用CPU处理的时间。具体的,CPU占用时间可以是在方法信息的执行结束时间与执行开始时间之间,线程得到的CPU时间长度。
在本实施方式中,方法执行CPU耗时可以为方法本身执行时占用CPU的时长。在方法之间存在嵌套关系时,即母方法调用了子方法,母方法的CPU时间减去子方法的CPU时间,可以得到该母方法的方法执行CPU耗时。
请参阅图7,在一个实施方式中,在所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
在本实施方式中,可以将具有调用关系的两个方法,以相邻的方式进行展示。如此,便于直观的观察不同方法之间的调用情况。具体的,例如,沿着竖直方向的两个方法信息,处于下方的可以为子方法,上方的可以为父方法。执行时,可以由父方法调用了子方法。
在本实施方式中,第二界面中的每个方法信息所在的条形框的长度,可以示意该方法信息表示的方法的执行时间。水平方向的位置,可以表示不同方法的执行时序。
请参阅图8。本说明书实施方式还提供一种客户端,包括:第一展示模块,用于展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程;第二展示模块,用于在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
在本实施方式中,所述客户端实现的功能和效果,可以参照其它实施方式对照解释。
在一个实施方式中,所述客户端还可以包括:第三展示模块,其用于在所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
在本实施方式中,第二触发事件可以为鼠标点击、鼠标停留、鼠标滑过、键盘选择或者语音输入操作等等。
在本实施方式中,在接近方法信息的位置显示实际执行时间和CPU占用时间的方式,可以通过悬浮窗的方式,或者弹窗的方式。
在本实施方式中,实际执行时间可以为方法信息在线程的执行数据集中的存续时间。时间执行时间可以为方法信息的执行结束时间与执行开始时间之间的差值。
在本实施方式中,CPU时间可以为操作系统提供的,线程中的一个方法执行过程中实际占用CPU处理的时间。具体的,CPU占用时间可以是在方法信息的执行结束时间与执行开始时间之间,线程得到的CPU时间长度。
在本实施方式中,方法执行CPU耗时可以为方法本身执行时占用CPU的时长。方法之间存在嵌套关系时,即母方法调用了子方法,母方法的CPU时间减去子方法的CPU时间,可以得到该母方法的方法执行CPU耗时。
请参阅图7,在一个实施方式中,在所述客户端的所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
在本实施方式中,可以将具有调用关系的两个方法,以相邻的方式进行展示。如此,便于直观的观察不同方法之间的调用情况。具体的,例如,沿着竖直方向的两个方法信息,处于下方的可以为子方法,上方的可以为父方法。执行时,可以由父方法调用了子方法。
在本实施方式中,第二界面中的每个方法信息所在的条形框的长度,可以示意该方法信息表示的方法的执行时间。水平方向的位置,可以表示不同方法的执行时序。
本说明书实施方式还提供一种客户端,包括:显示器、输入设备;所述显示器用于展示包括线程标识和时间轴的第一界面,其中,所述线程标识用于表示线程;在接收到所述输入设备输入的针对所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
在本实施方式中,所述输入设备可以是客户端的外部设备,可以向客户端输入电信号。具体的,例如,输入设备可以是鼠标、键盘、录音设备、手写板等。
在本实施方式中,所述显示器可以包括但不限于液晶显示器、射线管显示器、等离子显示器等。
在本实施方式中,所述客户端实现的功能和效果,可以参照其它实施方式对照解释。
在一个实施方式中,在所述显示器显示的所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
在本实施方式中,第二触发事件可以为鼠标点击、鼠标停留、鼠标滑过、键盘选择或者语音输入操作等等。
在本实施方式中,在接近方法信息的位置显示实际执行时间和CPU占用时间的方式,可以通过悬浮窗的方式,或者弹窗的方式。
在本实施方式中,实际执行时间可以为方法信息在线程的执行数据集中的存续时间。时间执行时间可以为方法信息的执行结束时间与执行开始时间之间的差值。
在本实施方式中,CPU占用时间可以为操作系统提供的,线程中的一个方法执行过程中实际占用CPU处理的时间。具体的,CPU占用时间可以是在方法信息的执行结束时间与执行开始时间之间,线程得到的CPU时间长度。
在本实施方式中,方法执行CPU耗时可以为方法本身执行时占用CPU的时长。在方法之间存在嵌套关系时,即母方法调用了子方法,母方法的CPU占用时间减去子方法的CPU占用时间,可以得到该母方法的方法执行CPU耗时。
请参阅图7,在一个实施方式中,在所述显示器展示的所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
在本实施方式中,可以将具有调用关系的两个方法,以相邻的方式进行展示。如此,便于直观的观察不同方法之间的调用情况。具体的,例如,沿着竖直方向的两个方法信息,处于下方的可以为子方法,上方的可以为父方法。执行时,可以由父方法调用了子方法。
在本实施方式中,第二界面中的每个方法信息所在的条形框的长度,可以示意该方法信息表示的方法的执行时间。水平方向的位置,可以表示不同方法的执行时序。
本说明书实施方式还提供一种计算机存储介质,所述计算机存储介质存储有计算机程序指令,所述计算机程序指令被执行时实现:展示包括线程标识和时间轴的第一界面,所述线程标识用于表示线程;在所述线程标识发生第一触发事件的情况下,展示第二界面,其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
在本实施方式中,所述计算机程序指令实现的功能和效果,可以参照其它实施方式对照解释。
在一个实施方式中,所述计算机程序指令被处理器执行时还可以实现:在所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
在本实施方式中,第二触发事件可以为鼠标点击、鼠标停留、鼠标滑过、键盘选择或者语音输入操作等等。
在本实施方式中,在接近方法信息的位置显示实际执行时间和CPU占用时间的方式,可以通过悬浮窗的方式,或者弹窗的方式。
在本实施方式中,实际执行时间可以为方法信息在线程的执行数据集中的存续时间。时间执行时间可以为方法信息的执行结束时间与执行开始时间之间的差值。
在本实施方式中,CPU时间可以为操作系统提供的,线程中的一个方法执行过程中实际占用CPU处理的时间。具体的,CPU占用时间可以是在方法信息的执行结束时间与执行开始时间之间,线程得到的CPU时间长度。
在本实施方式中,方法执行CPU耗时可以为方法本身执行时占用CPU的时长。在方法之间存在嵌套关系时,即母方法调用了子方法,母方法的CPU时间减去子方法的CPU时间,可以得到该母方法的方法执行CPU耗时。
请参阅图7,在一个实施方式中,在所述计算机程序指令被处理器执行时展示的所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
在本实施方式中,可以将具有调用关系的两个方法,以相邻的方式进行展示。如此,便于直观的观察不同方法之间的调用情况。具体的,例如,沿着竖直方向的两个方法信息,处于下方的可以为子方法,上方的可以为父方法。执行时,可以由父方法调用了子方法。
在本实施方式中,第二界面中的每个方法信息所在的条形框的长度,可以示意该方法信息表示的方法的执行时间。水平方向的位置,可以表示不同方法的执行时序。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施方式或者实施方式的某些部分所述的方法。
虽然通过实施方式描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
Claims (19)
1.一种性能数据的采集方法,其特征在于,所述方法包括:
在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;
初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间、CPU时间;
初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;
利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述应用方法执行的性能数据。
2.根据权利要求1所述的方法,其特征在于,所述性能数据至少包括以下至少之一:方法执行耗时、方法执行CPU耗时、线程调度数据。
3.根据权利要求1所述的方法,其特征在于,所述通过间隔采样的方式,得到所述应用方法执行的性能数据,包括:
暂停执行所述应用方法的线程;
将所述线程的最后一个栈帧数组存储入所述栈帧缓存容器;所述最后一个栈帧数组包括所述线程所执行的方法信息;
将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比;其中,存储的栈帧数组与所述最后一个栈帧数组具有不同的生成时间;
在二者不同的情况下,记录发生变更的方法信息的进出栈时间。
4.根据权利要求3所述的方法,其特征在于,在读取所述线程的最后一个栈帧数组的步骤中包括:读取所述执行线程的程序指针指向的栈帧数组;其中,所述程序指针指向所述应用方法当前执行的栈帧数组。
5.根据权利要求3所述的方法,其特征在于,将所述最后一个栈帧数组与之前存储的所述应用方法的栈帧数组进行对比,包括:
将存储的栈帧数组中生成时间与所述最后一个栈帧数组较为接近的栈帧数组与所述最后一个栈帧数组进行对比。
6.根据权利要求3所述的方法,其特征在于,所述进出栈时间包括执行开始时间;
所述记录发生变更的方法信息的进出栈时间,包括:
在发生变更的方法信息为所述最后一个栈帧数组相较于之前存储的所述栈帧数组增加了方法信息的情况下,将当前时间作为所述方法信息的执行开始时间进行记录。
7.根据权利要求3所述的方法,其特征在于,所述进出栈时间包括执行结束时间;
所述记录发生变更的方法信息的进出栈时间,包括:
在发生变更的方法信息为所述最后一个栈帧数组相较于之前存储的所述栈帧数组减少了方法信息的情况下,将当前时间作为所述方法信息的执行结束时间进行记录。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
展示包括线程标识和时间轴的第一界面;所述线程标识用于表示所述线程;
在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的所述进出栈时间。
9.根据权利要求8所述的方法,其特征在于,在所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
10.根据权利要求8所述的方法,其特征在于,所述第一界面的时间轴具有第一度量单位;所述第二界面的时间轴具有第二度量单位;所述第一度量单位和所述第二度量单位不同。
11.根据权利要求8所述的方法,其特征在于,所述方法还包括:
在所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
12.一种电子设备,其特征在于,包括:
容器初始化模块,用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;
缓存区初始化模块,用于初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;
线程初始化模块,用于初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;
采样模块,用于利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。
13.一种电子设备,其特征在于,包括:处理器;
所述处理器用于在应用方法执行的过程中,初始化一个栈帧缓存容器;所述栈帧缓存容器用于存储所述应用方法对应的线程最后一个栈帧数组;初始化一个内存缓存区,所述内存缓存区用于记录所述应用方法执行的进出栈时间;初始化采样线程,所述采样线程用于控制其他线程的数据采集和运行;利用初始化好的所述采样线程,通过间隔采样的方式,采集得到所述方法执行的性能数据。
14.一种信息展示方法,其特征在于,包括:
展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程;
在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
15.根据权利要求14所述的方法,其特征在于,所述第一界面的时间轴具有第一度量单位;所述第二界面的时间轴具有第二度量单位;所述第一度量单位和所述第二度量单位不同。
16.根据权利要求14所述的方法,其特征在于,所述方法还包括:
在所述第二界面中,在所述方法信息发生第二触发事件的情况下,在接近所述方法信息的位置显示所述方法信息的实际执行时间、CPU占用时间和方法执行CPU耗时。
17.根据权利要求14所述的方法,其特征在于,在所述第二界面中,沿着竖直方向相邻的两个方法信息之间存在调用关系。
18.一种客户端,其特征在于,包括:
第一展示模块,用于展示包括线程标识和时间轴的第一界面;所述线程标识用于表示线程;
第二展示模块,用于在所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
19.一种客户端,其特征在于,包括:显示器、输入设备;
所述显示器用于展示包括线程标识和时间轴的第一界面,其中,所述线程标识用于表示线程;在接收到所述输入设备输入的针对所述线程标识发生第一触发事件的情况下,展示第二界面;其中,所述第二界面包括所述线程标识表示的线程所调用的方法信息,以及所述方法信息相对于所述时间轴的位置表示所述方法信息的执行时长。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711055145.1A CN109753414A (zh) | 2017-11-01 | 2017-11-01 | 性能数据的采集方法、展示方法、电子设备和客户端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711055145.1A CN109753414A (zh) | 2017-11-01 | 2017-11-01 | 性能数据的采集方法、展示方法、电子设备和客户端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109753414A true CN109753414A (zh) | 2019-05-14 |
Family
ID=66397630
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711055145.1A Pending CN109753414A (zh) | 2017-11-01 | 2017-11-01 | 性能数据的采集方法、展示方法、电子设备和客户端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753414A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618933A (zh) * | 2019-08-15 | 2019-12-27 | 华为技术有限公司 | 性能分析方法与系统、电子设备与存储介质 |
CN110764941A (zh) * | 2019-09-05 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 |
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101208659A (zh) * | 2005-04-15 | 2008-06-25 | 微软公司 | 用于对软件程序进行性能分析的方法和装置 |
CN101539883A (zh) * | 2009-05-05 | 2009-09-23 | 北京和利时系统工程有限公司 | 嵌入式系统的错误追踪方法和装置 |
US20110099539A1 (en) * | 2009-10-27 | 2011-04-28 | Microsoft Corporation | Analysis and timeline visualization of thread activity |
US20110138363A1 (en) * | 2009-12-04 | 2011-06-09 | Sap Ag | Combining method parameter traces with other traces |
CN103559123A (zh) * | 2013-10-24 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于VxWorks操作系统的函数调用栈分析方法及装置 |
CN106227671A (zh) * | 2016-08-05 | 2016-12-14 | 网易(杭州)网络有限公司 | 程序运行性能分析方法及装置 |
US20170220446A1 (en) * | 2014-12-12 | 2017-08-03 | Sap Se | Recording CPU Time for Sample of Computing Thread Based on CPU use State of Activity Associated with the Sample |
-
2017
- 2017-11-01 CN CN201711055145.1A patent/CN109753414A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101208659A (zh) * | 2005-04-15 | 2008-06-25 | 微软公司 | 用于对软件程序进行性能分析的方法和装置 |
CN101539883A (zh) * | 2009-05-05 | 2009-09-23 | 北京和利时系统工程有限公司 | 嵌入式系统的错误追踪方法和装置 |
US20110099539A1 (en) * | 2009-10-27 | 2011-04-28 | Microsoft Corporation | Analysis and timeline visualization of thread activity |
US20110138363A1 (en) * | 2009-12-04 | 2011-06-09 | Sap Ag | Combining method parameter traces with other traces |
CN103559123A (zh) * | 2013-10-24 | 2014-02-05 | 烽火通信科技股份有限公司 | 基于VxWorks操作系统的函数调用栈分析方法及装置 |
US20170220446A1 (en) * | 2014-12-12 | 2017-08-03 | Sap Se | Recording CPU Time for Sample of Computing Thread Based on CPU use State of Activity Associated with the Sample |
CN106227671A (zh) * | 2016-08-05 | 2016-12-14 | 网易(杭州)网络有限公司 | 程序运行性能分析方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618933A (zh) * | 2019-08-15 | 2019-12-27 | 华为技术有限公司 | 性能分析方法与系统、电子设备与存储介质 |
CN110764941A (zh) * | 2019-09-05 | 2020-02-07 | 北京字节跳动网络技术有限公司 | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 |
CN110764941B (zh) * | 2019-09-05 | 2023-04-18 | 北京字节跳动网络技术有限公司 | 获取调用栈栈帧指令偏移的方法、装置、介质和设备 |
CN111124702A (zh) * | 2019-11-22 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
CN111124702B (zh) * | 2019-11-22 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 性能数据采集方法、装置和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7739662B2 (en) | Methods and apparatus to analyze processor systems | |
US7239980B2 (en) | Method and apparatus for adaptive tracing with different processor frequencies | |
US5887167A (en) | Synchronization mechanism for providing multiple readers and writers access to performance information of an extensible computer system | |
WO2016095554A1 (zh) | 应用程序的测试方法、设备及系统 | |
CN105612485B (zh) | 一种运行应用程序的方法及装置 | |
Liu et al. | Understanding the characteristics of android wear os | |
CN109753414A (zh) | 性能数据的采集方法、展示方法、电子设备和客户端 | |
CN108700984A (zh) | 桌面启动器 | |
US9442817B2 (en) | Diagnosis of application server performance problems via thread level pattern analysis | |
CN104866416B (zh) | 实现应用程序性能分析的方法和装置 | |
CN109960686A (zh) | 数据库的日志处理方法和装置 | |
CN110018920A (zh) | 一种页面展示异常的检测方法、装置及设备 | |
CN109062699A (zh) | 一种资源监控方法、装置、服务器及存储介质 | |
WO2008018035A2 (en) | Methods and products for determining and visualizin ic behaviour | |
CN109922298A (zh) | 会议室监控方法和装置 | |
CN108345644A (zh) | 一种数据处理的方法及装置 | |
CN1633644A (zh) | 用于确定cpu利用率的独立于操作系统的方法和系统 | |
CN109614270A (zh) | 基于Hbase的数据读写方法、装置、设备及存储介质 | |
CN109102361A (zh) | 一种基于智能电子秤的物品订单确认方法及系统 | |
WO2018071350A1 (en) | Time-correlated ink | |
CN103034577B (zh) | 一种定位关机慢的方法及装置 | |
WO2024152820A1 (zh) | 一种端到端的时间延迟的检测方法、装置以及设备 | |
CN103677254A (zh) | 用于记录操作的方法和设备 | |
CN113190427A (zh) | 卡顿监控方法、装置、电子设备及存储介质 | |
JP5773493B2 (ja) | 情報処理装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190514 |
|
RJ01 | Rejection of invention patent application after publication |