CN115563015A - 一种代码热度统计方法、装置、设备和存储介质 - Google Patents
一种代码热度统计方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN115563015A CN115563015A CN202211397139.5A CN202211397139A CN115563015A CN 115563015 A CN115563015 A CN 115563015A CN 202211397139 A CN202211397139 A CN 202211397139A CN 115563015 A CN115563015 A CN 115563015A
- Authority
- CN
- China
- Prior art keywords
- code
- program
- tested
- code block
- statistical
- 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.)
- Granted
Links
Images
Classifications
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种代码热度统计方法、装置、设备和存储介质,包括:获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,待测程序中包含最高优先级就绪线程;根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值。通过获取指定时间范围内各统计时刻的PC数值,并根据PC数值确定待测程序中各统计时刻所使用的代码块的编号,以在待测程序执行过程中根据编号可以实现自动获取各部分代码热度值,从而提高了代码热度获取的效率以及准确性。
Description
技术领域
本发明实施例涉及计算机科学技术领域,尤其涉及一种代码热度统计方法、装置、设备和存储介质。
背景技术
目前在通信技术领域在执行操作或指令时,通常由开发人员根据需求编写相应的代码程序,并通过所编写的代码程序执行相关的操作或指令,并根据操作或指令的最终执行结果来确定所编写的代码程序是否需要进行调整。
由于开发人员仅能够根据操作或指令的最终执行结果来确定所编写的代码程序是否需要进行调整,例如,当确定操作或指令的执行时间过长时,则需要人工对代码程序进行检测,确定出所编写的代码程序中哪些代码部分被重复调用执行,但这个过程会消耗大量的人力和时间成本,并且检测准确度也并不高。
发明内容
本发明实施例提供了一种代码热度统计方法、装置、设备和存储介质,以实现对代码热度的自动统计。
第一方面,本发明实施例提供了一种代码热度统计方法,包括:获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,所述最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;
根据所述PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,所述待测程序中包含所述最高优先级就绪线程;
根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值。
第二方面,本发明实施例提供了一种代码热度统计装置,包括:最高优先级就绪线程的上下文获取模块,用于获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,所述最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;
代码块的编号获取模块,用于根据所述PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,所述待测程序中包含所述最高优先级就绪线程;
代码热度值获取模块,用于根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值。
第三方面,本发明实施例提供了一种计算机设备,计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的代码热度统计方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的代码热度统计方法。
本发明实施例的技术方案,通过获取指定时间范围内各统计时刻的PC数值,并根据PC数值确定待测程序中各统计时刻所使用的代码块的编号,以在待测程序执行过程中根据编号可以实现自动获取各部分代码热度值,从而提高了代码热度获取的效率以及准确性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例一提供的代码热度统计方法的流程图;
图2是本发明实施例二提供的代码热度统计方法的流程图;
图3是本发明实施例三提供的代码热度统计装置的结构示意图;
图4是本发明实施例四提供的计算机设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种代码热度统计方法的流程图,本实施例可适用于对代码热度进行统计的场景,该方法可以由本发明实施例中的代码热度统计装置来执行,该装置可以采用硬件和/或软件的形式实现。如图1所示,该方法包括:
步骤S101,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文。
可选的,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文之前,还包括:确定统计线程的周期定时唤醒时刻,并将周期定时唤醒时刻作为各统计时刻;通过统计线程确定指定时间范围内各统计时刻之前所对应的全部线程;将全部线程中最晚处于运行状态的线程作为最高优先级就绪线程。
具体的说,本实施方式中的设备中会包含多个线程,包括用于进行热度统计的统计线程,以及由待测程序所构成的至少两个线程,并且设置所有线程中统计线程的优先级最高,从而当统计线程去查询待测程序的执行状态来获取代码热度时,由于统计线程的优先级最高,可以进行优先执行,从而其它线程就会停止运行并进入就绪状态。并且统计线程是定时启动的,例如,每间隔5秒启动一次,例如从1:10:10开始进行统计,指定时间范围是1小时,则1:10:15、1:10:20....2:10:10为统计线程的周期定时唤醒时刻,并将周期定时唤醒时刻作为各统计时刻。当然,本实施方式中仅是以5秒进行举例说明,而并不对周期时长进行具体限定,用户可以根据热度统计的需求进行设定。
其中,每次统计线程启动后,会确定本次统计时刻之前所对应的全部线程,并将全部线程中最晚处于运行状态的线程作为最高优先级就绪线程,例如,在统计时刻1:10:20统计线程启动,此时其它线程就会处于暂停状态,并将处于暂停状态的线程作为就绪线程,此时统计线程则会将1:10:15至1:10:20之间运行过的全部线程,例如,线程1、线程2、线程3和线程4,并且线程4是最晚处于运行状态的,则将线程4作为最高优先级就绪线程。当然,本实施方式中仅是针对1:10:20统计时刻进行举例说明,
需要说明的是,由于每个时间段范围内所运行的线程是不相同的,因此针对每个统计时刻所确定的最高优先级就绪线程可能是存在区别的。例如,针对1:10:20统计时刻所对应的最高优先级就绪线程为线程4,而针对1:10:35统计时刻所对应的最高优先级就绪线程为线程3。本实施方式中仅是举例说明,而并不对每个统计时刻所对应的最高优先级就绪线程的具体类型进行限定。
可选的,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,包括:获取指定时间范围内各统计时刻最高优先级就绪线程的标识;根据标识从本地数据库进行查询,获取最高优先级就绪线程的上下文。
具体的说,由于设备会对各线程在运行过程中的具体参数进行记录生成上下文,并将各线程的上下文在本地数据库中进行查询,因此当统计线程获取到指定时间范围内各统计线程最高优先级就绪线程的标识后,会根据标识从数据库中进行查询,以获取最高优先级就绪线程的上下文,其中,最高优先级就绪线程的上下文中包含程序计数寄存器(Program Counter Register,PC)的数值,而PC数值具体用于指示代码执行位置。例如,针对1:10:35统计时刻所对应的最高优先级就绪线程为线程3,并通过从本地数据库中进行查询可以获取线程3所对应的上下文,并从上下文中所提取PC的数值为X1。
步骤S102,根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号。
可选的,根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号,包括:获取待测程序中代码地址空间的起始地址;根据PC的数值和代码地址空间的起始地址确定代码地址空间偏移量;根据代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号。
可选的,根据代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号,包括:确定代码块单位长度;将代码地址空间偏移量除以代码块单位长度获取商;将商作为各统计时刻待测程序中所使用的代码块的编号。
具体的说,针对每次统计时刻,统计线程会获取待测程序中代码地址空间的起始地址text_start,并根据所获取的PC数值和代码地址空间的起始地址之差,来确定代码地址空间偏移量。由于待测程序中包含多个代码块,而每个代码块占用一定的代码空间长度,例如,代码块单位长度可以是4096,当然,本实施方式中仅是举例说明,而并不对代码块单位长度进行具体限定,并且本实施方式中主要是针对每个代码块的使用频次进行统计,因此在确定出代码地址空间偏移量PC-text_start之后,将代码地址空间偏移量除以单位长度(PC–text_start)/4096获取商。
例如,针对1:10:35统计时刻PC=X1,则将(X1–text_start)/4096所获取的商作为该统计时刻待测程序中所使用的代码块的编号,例如编号2。对于其它统计时刻获取所使用的代码块的编号与此大致相同,本实施方式中不再进行赘述。
步骤S103,根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值。
可选的,根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值,包括:获取代码数组中与代码块的编号所对应的元,其中,元的初值为0;将元的数值更新为在指定时间范围内各代码块的编号所确定的次数,并将各代码块的编号所确定的次数作为各代码块更新后的使用次数;将代码数组中各代码块更新后的使用次数作为待测程序中的代码热度值。
具体的说,本实施方式中会针对待测程序创建代码数组,而代码数组中包含与代码跨匹配的多个元,例如{[]1[]2。。。[]N},其中,N表示待测程序中代码块的总数量,[]1表示编号为1的代码块所对应的元,每个元中用于在指定时间范围内对各代码块的使用次数进行统计,每个元的初值为0。例如,指定时间范围为1小时,初次统计时刻为1:10:15,末次统计时刻为2:10:15,统计周期为5秒,当在1:10:15统计时刻确定所使用的代码块的编号为2,则相应的在[]2中加1,依次类推,当到达2:10:15时刻,最终所获取的更新后的代码数组为{[15]1[6]2。。。[10]N}。当然,本实施方式中仅是举例说明,而并不对最终所获取的代码数组的具体内容进行限定。
其中,本实施方式中将代码数组中各代码块更新后的使用次数作为代码程序中的代码热度值,从而在无需用户参与的情况下,在待测程序运行过程中,就可以自动获取到待测程序中各代码块的使用频次,因此相对于在待测程序运行完成后,通过用户人工进行检查来说结果要更加准确,效率要更加高。
本申请实施例,通过获取指定时间范围内各统计时刻的PC数值,并根据PC数值确定待测程序中各统计时刻所使用的代码块的编号,以在待测程序执行过程中根据编号可以实现自动获取各部分代码热度值,从而提高了代码热度获取的效率以及准确性。
实施例二
图2为本发明实施例二提供的一种代码热度统计方法的流程图,本实施例以上述实施例为基础,在获取待测程序中的代码热度值之后,还包括根据代码热度值确定代码调整策略,按照代码调整策略对待测程序进行调整。如图2所示,该方法包括:
步骤S201,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文。
可选的,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文之前,还包括:确定统计线程的周期定时唤醒时刻,并将周期定时唤醒时刻作为各统计时刻;通过统计线程确定指定时间范围内各统计时刻之前所对应的全部线程;将全部线程中最晚处于运行状态的线程作为最高优先级就绪线程。
可选的,获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,包括:获取指定时间范围内各统计时刻最高优先级就绪线程的标识;根据标识从本地数据库进行查询,获取最高优先级就绪线程的上下文。
步骤S202,根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号。
可选的,根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号,包括:获取待测程序中代码地址空间的起始地址;根据PC的数值和代码地址空间的起始地址确定代码地址空间偏移量;根据代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号。
可选的,根据代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号,包括:确定代码块单位长度;将代码地址空间偏移量除以代码块单位长度获取商;将商作为各统计时刻待测程序中所使用的代码块的编号。
步骤S203,根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值。
可选的,根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值,包括:获取代码数组中与代码块的编号所对应的元,其中,元的初值为0;将元的数值更新为在指定时间范围内各代码块的编号所确定的次数,并将各代码块的编号所确定的次数作为各代码块更新后的使用次数;将代码数组中各代码块更新后的使用次数作为待测程序中的代码热度值。
步骤S204,根据代码热度值确定代码调整策略,按照代码调整策略对待测程序进行调整。
具体的说,本实施方式中在根据更新后的代码数组获取到待测程序中的代码热度值之后,可以参照热度值确定代码调整策略,例如,所获取的代码数组为{[15]1[6]2。。。[10]N},从而可以确定各代码块的使用次数即热度值。
其中,用户可以根据热度值确定代码调整策略,例如,确定代码块1的使用次数最高为30,代码块5的使用次数为0次,则可以确定代码块1在待测程序执行过程中被多次调用,使用频繁,如果对代码块1进行精简则可以显著提高待代码块1的运行效率,因此需要对代码块1进行冗余内容的删减;而针对代码块5由于一次也没有使用,则说明代码块可能为无效的冗余程序,因此根据需要可以将代码块5进行删减,以提高待测程序整体的运行效率。当然本实施方式中仅是举例说明,而并不对调整策略的具体内容进行限定。
本申请实施例,通过获取指定时间范围内各统计时刻的PC数值,并根据PC数值确定待测程序中各统计时刻所使用的代码块的编号,以在待测程序执行过程中根据编号可以实现自动获取各部分代码热度值,从而提高了代码热度获取的效率以及准确性。通过代码热度值所确定代码调整策略来对待测程序进行调整,从而可以新一步提高待测程序的执行效率。
实施例三
图为本发明实施例三提供的一种代码热度统计装置的结构示意图。如图3所示,该装置包括:最高优先级就绪线程的上下文获取模块310、代码块的编号获取模块320和代码热度值获取模块330。
最高优先级就绪线程的上下文获取模块310,用于获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;
代码块的编号获取模块320,用于根据PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,待测程序中包含最高优先级就绪线程;
代码热度值获取模块330,用于根据代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取待测程序中的代码热度值。
可选的,装置还包括述最高优先级就绪线程确定模块,用于确定统计线程的周期定时唤醒时刻,并将周期定时唤醒时刻作为各统计时刻;
通过统计线程确定指定时间范围内各统计时刻之前所对应的全部线程;
将全部线程中最晚处于运行状态的线程作为最高优先级就绪线程。
可选的,最高优先级就绪线程的上下文获取模块,用于获取指定时间范围内各统计时刻最高优先级就绪线程的标识;
根据标识从本地数据库进行查询,获取最高优先级就绪线程的上下文。
可选的,代码块的编号获取模块,包括:
起始地址获取子模块,用于获取待测程序中代码地址空间的起始地址;
代码地址空间偏移量获取子模块,用于根据PC的数值和代码地址空间的起始地址确定代码地址空间偏移量;
代码块的编号获取子模块,用于根据代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号。
可选的,代码块的编号获取子模块,用于确定代码块单位长度;
将代码地址空间偏移量除以代码块单位长度获取商;
将商作为各统计时刻待测程序中所使用的代码块的编号。
可选的,代码热度值获取模块,用于获取代码数组中与代码块的编号所对应的元,其中,元的初值为0;
将元的数值更新为在指定时间范围内各代码块的编号所确定的次数,并将各代码块的编号所确定的次数作为各代码块更新后的使用次数;
将代码数组中各代码块更新后的使用次数作为待测程序中的代码热度值。
可选的,装置还包括程序调整模块,用于根据代码热度值确定代码调整策略;
按照代码调整策略对待测程序进行调整。
本发明实施例所提供的代码热度统计装置可执行本发明任意实施例所提供的代码热度统计方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4示出了可以用来实施本发明的实施例的电子设备10的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图4所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如代码热度统计方法。
在一些实施例中,代码热度统计方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的代码热度统计方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行代码热度统计方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种代码热度统计方法,其特征在于,包括:
获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,所述最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;
根据所述PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,所述待测程序中包含所述最高优先级就绪线程;
根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值。
2.根据权利要求1所述的方法,其特征在于,所述获取指定时间范围内各统计时刻最高优先级就绪线程的上下文之前,还包括:
确定统计线程的周期定时唤醒时刻,并将所述周期定时唤醒时刻作为所述各统计时刻;
通过所述统计线程确定所述指定时间范围内各统计时刻之前所对应的全部线程;
将所述全部线程中最晚处于运行状态的线程作为所述最高优先级就绪线程。
3.根据权利要求2所述的方法,其特征在于,所述获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,包括:
获取指定时间范围内各统计时刻最高优先级就绪线程的标识;
根据所述标识从本地数据库进行查询,获取所述最高优先级就绪线程的上下文。
4.根据权利要求1所述的方法,其特征在于,所述根据所述PC的数值确定各统计时刻待测程序中所使用的代码块的编号,包括:
获取所述待测程序中代码地址空间的起始地址;
根据所述PC的数值和所述代码地址空间的起始地址确定代码地址空间偏移量;
根据所述代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号。
5.根据权利要求4所述的方法,其特征在于,所述根据所述代码地址空间偏移量确定各统计时刻待测程序中所使用的代码块的编号,包括:
确定代码块单位长度;
将所述代码地址空间偏移量除以所述代码块单位长度获取商;
将所述商作为各统计时刻所述待测程序中所使用的代码块的编号。
6.根据权利要求1所述的方法,其特征在于,所述根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值,包括:
获取所述代码数组中与所述代码块的编号所对应的元,其中,所述元的初值为0;
将所述元的数值更新为在指定时间范围内各代码块的编号所确定的次数,并将各代码块的编号所确定的次数作为各代码块更新后的使用次数;
将所述代码数组中各代码块更新后的使用次数作为所述待测程序中的代码热度值。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值之后,还包括:
根据所述代码热度值确定代码调整策略;
按照所述代码调整策略对所述待测程序进行调整。
8.一种代码热度统计装置,其特征在于,包括:
最高优先级就绪线程的上下文获取模块,用于获取指定时间范围内各统计时刻最高优先级就绪线程的上下文,其中,所述最高优先级就绪线程的上下文中包含程序计数寄存器PC的数值;
代码块的编号获取模块,用于根据所述PC的数值确定各统计时刻待测程序中所使用的代码块的编号,其中,所述待测程序中包含所述最高优先级就绪线程;
代码热度值获取模块,用于根据所述代码块的编号对保存有各代码块使用次数的代码数组进行更新,以获取所述待测程序中的代码热度值。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211397139.5A CN115563015B (zh) | 2022-11-09 | 2022-11-09 | 一种代码热度统计方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211397139.5A CN115563015B (zh) | 2022-11-09 | 2022-11-09 | 一种代码热度统计方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115563015A true CN115563015A (zh) | 2023-01-03 |
CN115563015B CN115563015B (zh) | 2023-07-07 |
Family
ID=84768558
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211397139.5A Active CN115563015B (zh) | 2022-11-09 | 2022-11-09 | 一种代码热度统计方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115563015B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511942A (zh) * | 2015-12-02 | 2016-04-20 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
US9477451B1 (en) * | 2015-11-06 | 2016-10-25 | International Business Machines Corporation | Generating dynamic measurement metadata for efficient compilation and optimization on a target device |
US20180173534A1 (en) * | 2016-12-20 | 2018-06-21 | Intel Corporation | Branch Predictor with Branch Resolution Code Injection |
CN109582572A (zh) * | 2018-11-23 | 2019-04-05 | 复旦大学 | 一种判断可管理程序在多次执行中进入稳定阶段的方法 |
CN109582444A (zh) * | 2017-09-29 | 2019-04-05 | 英特尔公司 | 用于执行动态二进制转换处理器的区域形成的方法和装置 |
CN111258557A (zh) * | 2020-01-16 | 2020-06-09 | Oppo(重庆)智能科技有限公司 | 代码处理方法、装置、电子设备及计算机可读介质 |
CN112527316A (zh) * | 2020-12-29 | 2021-03-19 | Oppo广东移动通信有限公司 | 代码编译方法、装置、电子设备及存储介质 |
CN112948026A (zh) * | 2019-11-26 | 2021-06-11 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、服务器、电子设备及存储介质 |
CN114879948A (zh) * | 2022-07-08 | 2022-08-09 | 北京百度网讯科技有限公司 | 基于WebAssembly的智能合约处理方法、装置、设备及存储介质 |
-
2022
- 2022-11-09 CN CN202211397139.5A patent/CN115563015B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9477451B1 (en) * | 2015-11-06 | 2016-10-25 | International Business Machines Corporation | Generating dynamic measurement metadata for efficient compilation and optimization on a target device |
CN105511942A (zh) * | 2015-12-02 | 2016-04-20 | 华为技术有限公司 | 语言虚拟机中热点中间代码的识别方法以及装置 |
US20180173534A1 (en) * | 2016-12-20 | 2018-06-21 | Intel Corporation | Branch Predictor with Branch Resolution Code Injection |
CN109582444A (zh) * | 2017-09-29 | 2019-04-05 | 英特尔公司 | 用于执行动态二进制转换处理器的区域形成的方法和装置 |
CN109582572A (zh) * | 2018-11-23 | 2019-04-05 | 复旦大学 | 一种判断可管理程序在多次执行中进入稳定阶段的方法 |
CN112948026A (zh) * | 2019-11-26 | 2021-06-11 | Oppo广东移动通信有限公司 | 热点代码处理方法、装置、服务器、电子设备及存储介质 |
CN111258557A (zh) * | 2020-01-16 | 2020-06-09 | Oppo(重庆)智能科技有限公司 | 代码处理方法、装置、电子设备及计算机可读介质 |
CN112527316A (zh) * | 2020-12-29 | 2021-03-19 | Oppo广东移动通信有限公司 | 代码编译方法、装置、电子设备及存储介质 |
CN114879948A (zh) * | 2022-07-08 | 2022-08-09 | 北京百度网讯科技有限公司 | 基于WebAssembly的智能合约处理方法、装置、设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
LLLLLHT: "执行引擎:程序编译与代码优化", pages 1 - 32, Retrieved from the Internet <URL:《https://it.cha138.com/shida/show-44332.html》> * |
傅立国: "二进制翻译模型构建与优化关键技术研究", 《中国博士学位论文全文数据库信息科技辑》, no. 12, pages 138 - 135 * |
站长百科: "Java多线程优化方法及使用方式", pages 1 - 9, Retrieved from the Internet <URL:《https://www.ufcn.cn/it/687533.html》> * |
高亚虎: "面向动态链接库的二进制翻译技术研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 06, pages 138 - 2139 * |
Also Published As
Publication number | Publication date |
---|---|
CN115563015B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019537A (zh) | 本地缓存刷新方法、装置、计算机设备及存储介质 | |
CN115598505A (zh) | 一种芯片检测方法、装置、设备和存储介质 | |
CN115168130A (zh) | 一种芯片测试方法、装置、电子设备及存储介质 | |
CN116545905A (zh) | 一种服务健康检测方法、装置、电子设备及存储介质 | |
CN115563015B (zh) | 一种代码热度统计方法、装置、设备和存储介质 | |
CN115617800A (zh) | 数据读取方法、装置、电子设备及存储介质 | |
CN115617475A (zh) | 循环闹钟设置方法、装置、电子设备及存储介质 | |
CN115309730A (zh) | 数据审核方法、装置、电子设备及存储介质 | |
CN117493342B (zh) | 商品数据更新方法、装置、电子设备和存储介质 | |
CN117290179B (zh) | 一种事件超时状态的确定方法、装置、设备和存储介质 | |
CN115858104A (zh) | 一种事务提交序号快照获取方法、装置、设备及存储介质 | |
CN115983222A (zh) | 基于EasyExcel的文件数据读取方法、装置、设备及介质 | |
CN118467579A (zh) | 一种数据库结构处理方法、装置、设备及存储介质 | |
CN115827588A (zh) | 一种业务全局流水号的生成方法、装置、设备和存储介质 | |
CN114218325A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN116186176A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN116523325A (zh) | 一种运营策略的配置方法、装置、设备及介质 | |
CN117331994A (zh) | 数据的实时处理方法及装置、电子设备和存储介质 | |
CN115480993A (zh) | 一种信号到达时间阈值确定方法、装置、设备及存储介质 | |
CN115687529A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
CN115617804A (zh) | 不间断服务的数据加工方法、装置、设备及存储介质 | |
CN117667938A (zh) | 一种数据库索引的更新方法、装置、设备及存储介质 | |
CN115454847A (zh) | 一种压力测试方法、装置、电子设备及存储介质 | |
CN114722264A (zh) | 一种数据查询方法、装置、电子设备及存储介质 | |
CN116401269A (zh) | 一种数据查询方法、装置、电子设备及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |