CN117668424A - 一种函数处理的方法、装置、设备、存储介质及程序产品 - Google Patents
一种函数处理的方法、装置、设备、存储介质及程序产品 Download PDFInfo
- Publication number
- CN117668424A CN117668424A CN202311361995.XA CN202311361995A CN117668424A CN 117668424 A CN117668424 A CN 117668424A CN 202311361995 A CN202311361995 A CN 202311361995A CN 117668424 A CN117668424 A CN 117668424A
- Authority
- CN
- China
- Prior art keywords
- function
- subtask
- running
- frame
- run
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 137
- 238000000034 method Methods 0.000 title claims abstract description 90
- 238000003860 storage Methods 0.000 title claims abstract description 34
- 230000006870 function Effects 0.000 claims abstract description 516
- 238000004458 analytical method Methods 0.000 claims abstract description 149
- 230000008569 process Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 abstract description 21
- 238000013473 artificial intelligence Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 13
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 208000015041 syndromic microphthalmia 10 Diseases 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种函数处理的方法、装置、设备、存储介质及程序产品,可应用于人工智能、云技术等应用场景,用于实现全量自动化分析待分析任务中的热点函数,省去了人工逐帧分析时的时间和人力成本,极提高热点分析效率。该方法包括:获取待分析任务的第一文件,第一文件包括至少一个第一运行函数以及每个第一运行函数的函数信息,每个函数信息用于指示在运行每一帧子任务时对应的第一运行函数的运行情况,待分析任务包括N帧子任务,N为大于或等于1的整数;对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果;基于第一分析结果,从一个或多个第一运行函数中确定对应帧子任务中的热点函数。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及一种函数处理的方法、装置、设备、存储介质及程序产品。
背景技术
在各种应用程序等分析任务的性能验收阶段,往往会出现各类的热点函数问题。在传统的热点函数的分析方式中,往往会使用虚幻引擎(unreal engine,UE)提供的Stat录制工具进行数据收集,并使用UE引擎自带的Frontend工具进行解析。研发人员会根据Frontend工具分析得到的函数信息,对分析任务进行手动逐帧分析,尽可能地将各类热点函数抓取,从而根据函数耗时的优先级进行尝试优化,并在完成优化后进行标记,以进入下一轮的游戏性能验收直至性能达标。
换句话说,当前对于分析任务中热点函数的收集是通过Stat工具收集整个函数耗时信息,之后使用Frontend工具进行解析。然而,在分析的过程中往往需要人工进行逐帧地高耗时分析,例如说录制时长为30分钟的录制视频约有1800帧,需要人工手动地对这1800帧子任务进行热点函数的分析,消耗巨大的时间和人力成本,并不利于快速地确定热点函数。
发明内容
本申请实施例提供了一种函数处理的方法、装置、设备、存储介质及程序产品,用于实现全量自动化分析待分析任务中的热点函数,避免人工逐帧分析,省去了人工逐帧分析时的时间和人力成本,极大地提高了热点分析效率。
第一方面,本申请实施例提供了一种函数处理的方法。该方法包括:获取待分析任务的第一文件,所述第一文件包括至少一个第一运行函数以及每个所述第一运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第一运行函数的运行情况,所述待分析任务包括N帧所述子任务,N为大于或等于1的整数;对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果,所述第一分析结果用于指示运行每一帧所述子任务时对应的所述第一运行函数的函数性能情况;基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数。
第二方面,本申请实施例提供一种函数处理装置。该函数处理装置包括获取单元和处理单元。其中,获取单元,用于获取待分析任务的第一文件,所述第一文件包括至少一个第一运行函数以及每个所述第一运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第一运行函数的运行情况,所述待分析任务包括N帧所述子任务,N为大于或等于1的整数。处理单元,用于对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果,所述第一分析结果用于指示运行每一帧所述子任务时对应的所述第一运行函数的函数性能情况。所述处理单元,用于基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数。
在一些可选的实施方式中,所述第一分析结果包括运行耗时信息;处理单元用于:对运行当前帧子任务时的每个所述第一运行函数的运行耗时信息进行求和,得到所述当前帧子任务的总耗时,所述当前帧子任务为所述N帧子任务中的任意一帧子任务;在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数。
在另一些可选的实施方式中,所述预设判定条件包括以下条件中的一个或多个,即:述当前帧子任务的总耗时大于至少P倍的所述当前帧子任务的平均耗时,P为大于或等于2的整数;所述当前帧子任务的总耗时大于至少Q倍的第一子任务的平均耗时,所述第一子任务包括在所述当前帧子任务之前的至少前M帧子任务,M、Q为大于或等于2的整数;所述当前帧子任务的总耗时大于预设耗时阈值。
在另一些可选的实施方式中,处理单元还用于:在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数之前,统计运行所述当前帧子任务时的所述第一运行函数的函数数目;基于所述当前帧子任务的总耗时和运行所述当前帧子任务时所述第一运行函数的函数数目,确定所述当前帧子任务的平均耗时。
在另一些可选的实施方式中,处理单元还用于:在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数之前,统计所述至少前M帧子任务中运行每帧所述子任务时的所述第一运行函数的函数数目,并对所述至少前M帧子任务中运行每帧所述子任务时的第一运行函数的函数数目进行求和,得到运行所述第一子任务时的函数数目;对所述前M帧子任务中运行每帧所述子任务时的所述第一运行函数的运行耗时信息进行求和,得到所述第一子任务的总耗时;基于所述第一子任务的总耗时和所述第一子任务的函数数目,确定所述第一子任务的平均耗时。
在另一些可选的实施方式中,处理单元还用于:在基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数之后,记录运行所述当前帧子任务时的每个所述第一运行函数的函数标识。
在另一些可选的实施方式中,获取单元还用于:在基于运行每一帧所述子任务时的每个所述第一运行函数的运行分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数之后,获取所述待分析任务的第二文件,所述第二文件包括至少一个第二运行函数以及每个所述第二运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第二运行函数的运行情况。处理单元,用于对运行每一帧所述子任务时的一个或多个所述第二运行函数的函数信息进行解析处理,得到第二分析结果,所述第二分析结果用于指示运行每一帧所述子任务时对应的所述第二运行函数的函数性能情况;基于所述第一分析结果和所述第二分析结果确定比较结果,所述比较结果用于指示运行每一帧所述子任务时的所述第一运行函数与所述第二运行函数之间的函数运行性能差异;基于所述比较结果对所述第一运行函数和所述第二运行函数进行分析处理。
在另一些可选的实施方式中,处理单元还用于:所述基于所述第一分析结果和所述第二分析结果确定比较结果之后,将所述比较结果存储至远程存储介质中。
在另一些可选的实施方式中,获取单元还用于:所述对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果之前,获取编译配置信息,并基于所述编译配置信息构建目标应用程序,所述编译配置信息用于指示运行所述待分析任务时的进程配置情况。处理单元,用于通过所述目标应用程序对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果。
本申请实施例第三方面提供了一种函数处理设备,包括:存储器、输入/输出(I/O)接口和存储器。存储器用于存储程序指令。处理器用于执行存储器中的程序指令,以执行上述第一方面的实施方式对应的函数处理的方法。
本申请实施例第四方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行以执行上述第一方面的实施方式对应的方法。
本申请实施例第五方面提供了一种包含指令的计算机程序产品,当其在计算机或者处理器上运行时,使得计算机或者处理器执行上述以执行上述第一方面的实施方式对应的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例中,获取待分析任务的第一文件,并且该第一文件中包括至少一个第一运行函数以及每个第一运行函数的函数信息,待分析任务包括N帧子任务。所提及的每个函数信息用于指示在运行每一帧子任务时对应的第一运行函数的运行情况。这样,再对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果。通过第一分析结果,能够反映出运行每一帧子任务时对应的第一运行函数的函数性能情况。这样,再基于第一分析结果,从一个或多个第一运行函数中确定对应帧的子任务中的热点函数。通过上述方式,在获得待分析任务的第一文件后,能够对该第一文件中运行每一帧子任务的运行函数的函数信息进行解析,从而基于各自的分析结果来确定各个帧的子任务中的热点函数,实现对待分析任务中的热点函数进行全量自动化分析,避免人工逐帧分析,省去了人工逐帧分析时的时间和人力成本,极大地提高了热点分析效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出传统方案中确定热点函数的解析流程示意图;
图2示出本申请实施例提供的系统架构示意图;
图3示出了本申请实施例提供的函数处理的方法的一种流程图;
图4示出了本申请实施例中提供的待分析任务的场景示意图;
图5示出了本申请实施例提供的解析处理的流程示意图;
图6示出了本申请实施例提供的目标应用程序的构建方法的示意图;
图7示出了本申请实施例提供的编译配置信息的示意图;
图8示出了本申请实施例提供的主函数的示意图;
图9示出了本申请实施例提供的目标应用程序的代码执行的流程示意图;
图10示出了本申请实施例提供的第一分析结果的示意图;
图11示出了本申请实施例提供的对热点函数进行判定的示意图;
图12示出了本申请实施例提供的分析结果的对比示意图;
图13示出了本申请实施例提供的数据存储的示意图;
图14示出了本申请实施例中提供的函数处理装置的功能模块示意图;
图15示出了本申请实施例中提供的函数处理设备的硬件结构示意图。
具体实施方式
本申请实施例提供了一种函数处理的方法、装置、设备、存储介质及程序产品,用于实现全量自动化分析待分析任务中的热点函数,避免人工逐帧分析,省去了人工逐帧分析时的时间和人力成本,极大地提高了热点分析效率。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在软件开发过程中,有些函数比其他函数更频繁地被执行,通常称为热点函数。热点函数的性能会对应用程序的整体性能产生重大影响。因此,确定应用程序中的热点函数,并对热点函数进行优化,能够显著提升应用程序整体的性能。
以待分析任务为虚拟游戏应用程序为例,图1示出传统方案中确定热点函数的解析流程示意图。如图1所示,需要使用UE引擎提供的Stat录制工具进行数据收集,并使用UE引擎自带的Frontend工具进行解析。进一步地,根据Frontend工具分析得到的函数信息对分析任务进行手动逐帧分析,以用于完成抓取各类热点函数。随后,再根据函数耗时的优先级进行尝试优化,并在完成优化后进行标记,以进入下一轮的游戏性能验收直至性能达标。
但是,在图1示出当前的热点函数分析的过程中,通常是依赖于人工手动地对待分析任务进行逐帧地分析,但会引起消耗巨大的时间和人力成本,并不利于快速地确定热点函数。
因此,为了解决上述提及的技术问题,本申请实施例提供了一种函数处理的方法。示例性地,本申请提供的函数处理的方法可应用于图2示出的系统架构示意图。如图2所示,该系统架构至少包括终端设备和函数处理设备。其中,终端设备与函数处理设备可以通过有线通信或无线通信等方式进行直接连接或间接连接,本申请不做具体限定。
用户希望能够获知待分析任务中的热点函数的情况,此时可以借助终端设备将该待分析任务的第一文件通过消息或者报文等方式发送至函数处理设备。或者,也可以借助终端设备将该第一文件的文件标识等告知函数处理设备,进而由函数处理设备基于该文件标识从相应的文件存储器中读取对应的第一文件,以获得到该待分析任务的第一文件。示例性地,所描述的第一文件有时候也可以称为stat文件,具体本申请实施例中不做限定。所描述的stat文件是基于stat机制所生成的一种文件。所描述的stat机制是UE引擎中一种基于埋点的机制,即通过在一段逻辑前后显示的增加标签来录得这段时间这个标签内逻辑的运行时间。然后利用UE引擎中的Frontend工具可视化所有打了标签的函数的运行时间曲线。
这样,函数处理设备在获取得到该终端设备发送的第一文件后,通过对该第一文件中运行每一帧子任务的第一运行函数的函数信息进行解析,从而基于各自的第一分析结果来确定各个帧的子任务中的热点函数,实现对待分析任务中的热点函数进行全量自动化分析,避免人工地逐帧分析,省去了人工逐帧分析时的时间和人力成本,极大地提高了热点分析效率。
示例性地,函数处理设备在确定热点函数后,可选地还可以将热点函数存储,并进行web可视化处理等。
需说明,上述提及的终端设备可以包括但不限于智能手机、台式计算机、笔记本电脑、平板电脑、智能音箱、车载设备、智能手表、可穿戴智能设备、智能语音交互设备、智能家电、飞行器等,具体本申请不做限定。
另外,所提及的函数处理设备可以包括但不限于服务器、或者其他能够具备数据处理的其他设备等,具体本申请实施例不做限定。所描述的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(context delivery network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器等,本申请不做具体限定。
示例性地,上述图2中所提及的函数处理的方法还可以应用在云技术(cloudtechnology)等领域中。所描述的云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
所提及的云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为基础设施即服务(infrastructure as a service,IaaS)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。按照逻辑功能划分,在IaaS层上可以部署平台即服务(platform as a service,PaaS)层,PaaS层之上再部署软件即服务(Software as aService,SaaS)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。
目前,云技术在很多领域已经得到了广泛的应用,云游戏便是云技术的应用产物之一。云游戏(cloud gaming)又可以称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏并不在终端设备中运行,而是在云端服务器中运行,并由云端服务器将游戏场景渲染为视频音频流,通过网络传输给终端设备。终端设备无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取输入指令并发送给云端服务器的能力即可。
所描述的云游戏可以包括但不限于卡牌类游戏(collectible card game,CCG)、大型多人在线角色扮演游戏(multiplayer online role-playing game,MMORPG)、多人在线技术竞技游戏(multiplayer online battle arena,MOBA)、大世界游戏、开发世界游戏等,本申请实施例中不做限定说明。
示例性地,本申请实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
以前述图2中示出的函数处理设备作为执行函数处理的方法的执行主体,结合附图对本申请实施例提供的一种函数处理的方法进行介绍。图3示出了本申请实施例提供的函数处理的方法的一种流程图。如图3所示,该函数处理的方法可以包括如下步骤:
301、获取待分析任务的第一文件,第一文件包括至少一个第一运行函数以及每个第一运行函数的函数信息,每个函数信息用于指示在运行每一帧子任务时对应的第一运行函数的运行情况,待分析任务包括N帧子任务,N为大于或等于1的整数。
该示例中,所描述的待分析任务可以理解成基于UE引擎开发的各类应用程序,例如包括但不限于虚拟游戏应用程序、即时通讯消息应用程序、视频应用程序等等,具体本申请实施例中不做限定。针对该待分析任务,可以将该待分析任务拆分成连续的N帧子任务。也就是说,待分析任务包括连续的N帧子任务。
示意性地,用户可以通过终端设备键入待分析任务的任务标识(identity,ID),以使函数处理设备能够获知需要对哪个待分析任务进行函数处理。举例来说,图4示出了本申请实施例中提供的待分析任务的场景示意图。如图4所示,可以为名称为“日常冒烟”的待分析任务创建一个ID为30的任务标识。
需说明,上述图4中仅以任务标识为30作为举例说明,在实际应用中还可以包括其他的标识取值,此处不做具体限定。
在运行每一帧子任务的过程中,均可以调用相应的第一运行函数来完成,这时候,能够将运行过程中所使用的第一运行函数以及第一运行函数的函数信息记录在该待分析任务的第一文件中。所描述的第一文件能够用于记录运行该待分析任务时每个运行函数的相关信息。换句话说,在该第一文件中,包括至少一个第一运行函数以及每个第一运行函数的函数信息。通过函数信息能够反映在运行每一帧子任务时对应的第一运行函数的运行情况。
举例来说,在N=2的情况下,针对第一帧子任务,可调用运行函数1至运行函数2来实现。此时可将运行第一帧子任务时所使用的运行函数1至运行函数2,以及运行函数1至运行函数2各自的函数信息记录在第一文件中。同样地,针对第二帧子任务,也可以使用运行函数1、运行函数3来完成,进而可将运行第二帧子任务时所使用的运行函数1、运行函数3,以及运行函数1与运行函数3各自的函数信息记录在第一文件中。由此,第一文件中可记录有运行第一帧子任务和第二帧子任务时相关的运行函数以及运行函数的函数信息。
示例性地,所描述的函数信息可以包括但不限于函数的运行耗时情况、以及函数调用情况等,具体本申请实施例中不做限定。
302、对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果,第一分析结果用于指示运行每一帧子任务时对应的第一运行函数的函数性能情况。
该示例中,在获取得到第一文件后,可以对运行该待分析任务中的每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,从而得到各帧子任务对应的第一分析结果。
譬如说,以某帧子任务A为例,可以以运行耗时为解析指标,进而基于该运行耗时解析指标从运行该帧子任务A时的一个或多个第一运行函数的函数信息中,统计并计算出相应的运行耗时时间、平均耗时、运行耗时峰值、运行耗时分布等,进而得到相应的第一分析结果,例如运行耗时信息。换句话说,在第一分析结果为运行耗时信息的情况下,该第一分析结果中可以包括运行耗时时间、平均耗时、运行耗时峰值、运行耗时分布等内容。同样地,也可以以函数调用为解析指标,并基于该函数调用解析指标从运行该帧子任务A时的一个或多个第一运行函数的函数信息中,统计并计算出相应的函数调用次数、函数调用次数峰值、函数调用平均值等,进而得到相应的第一分析结果,例如函数调用信息。换句话说,在第一分析结果为函数调用信息的情况下,该第一分析结果中可以包括函数调用次数、函数调用次数峰值、函数调用平均值等内容。
作为一个示意性的描述,图5示出了本申请实施例提供的解析处理的流程示意图。如图5所示,在上述图2中示出的对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行后台解析处理的过程中,可以通过该函数处理设备中的解析控制器(ProfilerManager)模块,进行整体解析数据的进度控制以及后续各个服务的启动控制。示例性的,解析控制器模块会启动单独的线程来执行解析命令(Profiler Commands)控制模块,进而通过解析命令控制模块来检测是否已经获取得到前述提及的第一文件的文件标识。这样,在通过解析命令控制模块检测到已经获取得到第一文件的文件标识后,则从文件存储器中基于该文件标识获取得到第一文件。这样,在整个第一文件的读取操作完成后,解析控制器模块则会启动解析会话(ProfilerSession)帧数据模块,进而通过解析会话帧数据模块对运行每帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,以确定相应的第一分析结果。
从前述图1示出的内容可以看出,由于在传统确定热点函数的过程中,需要将Frontend工具与整个UE引擎耦合,使得仅对这个stat文件的解析就要使用整个UE引擎工程,占用10G左右空间的引擎工程对于多人协作研发非常浪费时间。因此,在本申请另一些可选的示例中,为了能够脱离对UE引擎编辑器的依赖,本申请实施例还可以构建单独进行解析的独立应用程序(Standalone Application)来完成对函数信息的解析过程。示例性地,本申请实施例中从主(main)函数来自主构建自己的目标应用程序,完全控制启用哪些Modules模块,而不依赖于UE引擎本身的逻辑架构,方便进行工具的分发。这样,在构建出独立运行的目标应用程序后,将上述提及的解析处理的过程放置在该独立运行的目标应用程序中执行,能够使得整个解析代码程序从之前的10G减少到了50MB,能够实现轻量级地解析处理,极大地减少解析过程中占用的内存资源和运行资源。也就是说,函数处理设备还可以在对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理得到第一分析结果之前,获取编译配置信息,并基于编译配置信息构建目标应用程序,编译配置信息用于指示运行待分析任务时的进程配置情况。
举例来说,图6示出了本申请实施例提供的目标应用程序的构建方法的示意图。如图6所示,函数处理设备可以从UE引擎中先获取第一应用程序(例如BlankProgram应用)的位置信息,例如“\Engine\Source\Programs”。函数处理设备再基于该第一应用程序的位置信息获得该第一应用程序的程序信息,例如包括但不限于引用、外部依赖项、private、资源(resources)等内容。这样,函数处理设备将该第一应用程序的程序信息替换成目标应用程序的应用名等,进而运行UE引擎中的GenerateProjectFiles.bat,以生成对应的解析方案。
针对上述示出的编译配置信息,可以参照图7示出的示意图进行理解。具体地,从图7可以看出,该编译配置信息至少包括第一信息、第二信息以及第三信息等。其中,第一信息例如可以是bCompileWithPluginSupport信息,能够用于控制是否包含插件。第二信息例如可以是bIsBuildingConsoleApplication信息,能够用来控制是否是命令行应用,其中,若通过第二信息的取值能够获知是用来控制命令行应用,则此时的入口函数为main函数,反之入口函数则为WinMain函数。第三信息例如可以是bCompileICU信息,用于控制是否需要使用国际化,若无国际化相关配置等内容,则在目标程序运行时,则会进行报错处理。
针对上述图7中示出的main函数,具体可以参照图8示出的示意图进行理解。具体地,从图8可以看出,在main函数中需要包含RequiredProgramMainCPPInclude.h,从而可以将LaunchEngineLoop.cpp等依赖项包含入整个工程。此外,该main函数中还需要通过MPLEMENT_APPLICATION宏将该项目标记为独立的目标应用程序。另外,从图8还可以获知INT32_MAIN_INT32_ARGC_TCHAR_ARGV实际上就是main函数的简写。
在依据上述图6至图8的方式构建得到目标应用程序后,图9示出了本申请实施例提供的目标应用程序的代码执行的流程示意图。如图9所示,通过GEnginLoop.PreInit能够初始化UE引擎中各种基本模块,例如CoreUObject、TaskGraph等,进而在各种基本模块完成初始化后,便能够执行各种自定义逻辑,例如执行前述提及的第一文件的读取、分析、导出功能等,具体本申请中不做限定。另外,在执行完自定义逻辑之后,还可能需要对目标应用程序进行各种清理操作后才能正常退出,包括但不限于单例的清理(FProfilerManager)、卸载掉显式加载的各类模块(ProfilerClient、SessionServices);调用引擎的退出函数(AppPreExit、AppExit);FPlatformMisc::RequestExit等,具体本申请中不做限定。
这样,函数处理设备在构建出目标应用程序后,在对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理的过程中,可以通过目标应用程序对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果。
举例来说,图10示出了本申请实施例提供的第一分析结果的示意图。如图10所示,示出了6个运行函数对应的运行情况。譬如说,针对函数名称为“FTickFunctionTask”的运行函数,其平均耗时为12.372毫秒(ms)、耗时峰值为133.443ms、调用平均值为553.357、调用峰值为635等等。需说明,针对图10中其他的运行函数的运行情况,也可以参照该函数名称为“FTickFunctionTask”的运行函数的运行情况进行理解,此处不做赘述。
303、基于第一分析结果,从一个或多个第一运行函数中确定对应帧子任务中的热点函数。
该示例中,函数处理设备在确定出每帧子任务对应的第一分析结果后,则可以基于各自的第一分析结果,从一个或多个第一运行函数中确定对应帧的子任务中的热点函数。所描述的热点函数,则可以理解成每帧子任务中运行耗时最高的运行函数。
示例性地,以第一分析结果包括运行耗时信息为例,函数处理设备可以对运行当前帧子任务时的每个第一运行函数的运行耗时信息进行求和,得到当前帧子任务的总耗时。所描述的当前帧子任务为N帧子任务中的任意一帧子任务。这样,函数处理设备在计算出当前子任务的总耗时后,再将该当前子任务的总耗时与预设判定条件进行比较,进而在当前帧子任务的总耗时满足预设判定条件的情况下,确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数。
函数处理设备在判断当前帧子任务的总耗时是否满足预设判定条件,可以从将当前帧子任务的总耗时,分别与当前帧子任务的平均耗时、与前M帧子任务的平均耗时、或者预设耗时阈值等等角度进行比较,以此比较结果来判断是否满足预设判定条件。因此,函数处理设备在当前帧子任务的总耗时满足预设判定条件时,确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数之前,还可以先计算当前帧子任务的平均耗时、前M帧子任务的平均耗时等。
作为一个示意性的描述,在计算当前帧子任务的平均耗时的过程中,可以参照下述方式进行理解,即:
函数处理设备可以统计运行当前帧子任务时的第一运行函数的函数数目,进而基于当前帧子任务的总耗时和运行当前帧子任务时第一运行函数的函数数目,计算当前帧子任务的平均耗时。
举例来说,假设运行当前帧子任务时的第一运行函数为运行函数1、运行函数2以及运行函数3,并且运行函数1的运行耗时时间为30ms、运行函数2的运行耗时时间为20ms、运行函数3的运行耗时时间为28ms。函数处理设备可以计算出当前帧子任务的总耗时为这3个运行函数的运行耗时时间总和,即48ms。另外,函数处理设备还可以统计出运行该当前帧子任务时第一运行函数的函数数目为3个,并计算得到当前帧子任务的平均耗时为78ms/3=26ms。
作为另一个示例性的描述,在计算前M帧子任务的平均耗时的过程中,可以参照下述方式进行理解,即:
函数处理设备先统计至少前M帧子任务中运行每帧子任务时的第一运行函数的函数数目,并对至少前M帧子任务中运行每帧子任务时的第一运行函数的函数数目进行求和,得到运行第一子任务时的函数数目。需说明,此处所提及的第一子任务包括当前帧子任务之前的至少前M帧子任务,M为大于或等于2的整数。随后,函数处理设备再对前M帧子任务中运行每帧子任务时的第一运行函数的运行耗时信息进行求和,得到第一子任务的总耗时。这样,函数处理设备在计算出第一子任务的函数数目和总耗时后,则基于第一子任务的总耗时和第一子任务的函数数目,确定第一子任务的平均耗时。
举例来说,以当前帧子任务为待分析任务中的第10帧子任务为例,可以选取该第10帧子任务的前3帧(即M=3)子任务作为第一子任务,即第一子任务包括第7帧子任务、第8帧子任务以及第9帧子任务。
若运行第7帧子任务时的第一运行函数为运行函数1,并且该运行函数1的运行耗时时间为10ms;同样地,若运行第8帧子任务时的第一运行函数为运行函数1、运行函数4,并且该运行函数1、运行函数4的运行耗时时间分别为15ms、18ms;同样地,若运行第9帧子任务时的第一运行函数为运行函数2和运行函数3,并且该运行函数2、运行函数3的运行耗时时间分别为20ms、30ms。这时候,函数处理设备可以计算出该第一子任务的总耗时为第7帧子任务的总耗时(即10ms)、第8帧子任务的总耗时(即33ms)以及第9帧子任务的总耗时(即50ms)之和,即93ms。函数处理设备还可以统计出运行该第一子任务时第一运行函数的函数数目为4个,并计算得到第一子任务的平均耗时为93ms/4=23.25ms。
这样,函数处理设备在按照前述方式计算出当前帧子任务的平均耗时、第一子任务的平均耗时后,则可以判断当前帧子任务的总耗时是否满足预设判定条件。换句话说,上述所提及的预设判定条件至少包括如下条件中的一个或者多个,即:
条件1:当前帧子任务的总耗时大于至少P倍的当前帧子任务的平均耗时,P为大于或等于2的整数。
举例来说,以P=3为例,若当前帧子任务的总耗时为78ms、当前帧子任务的平均耗时为26ms,此时函数处理设备可以判断出当前帧子任务的总耗时(即78ms)并未大于3倍的当前帧子任务的平均耗时。这样,函数处理设备则可以判断出当前帧子任务的总耗时并未满足该条件1。
条件2:当前帧子任务的总耗时大于至少Q倍的第一子任务的平均耗时,第一子任务包括在当前帧子任务之前的至少前M帧子任务,M、Q为大于或等于2的整数。
举例来说,以Q=2为例,以前述提及的第一子任务的平均耗时为23.25ms,当前帧子任务的总耗时为78ms为例。函数处理设备可以计算出78ms>23.25ms×2,此时可以判断出该当前帧子任务的总耗时满足该条件2。
条件3:当前帧子任务的总耗时大于预设耗时阈值。
举例来说,预设耗时阈值可以为两帧电影帧耗时(即84ms)、或者也可以是用户基于分析需求而自定义的其他取值,具体本申请实施例中不做限定。以两帧电影帧耗时为例,若当前帧子任务的总耗时为78ms,函数处理设备可以判断出78ms<84ms,由此可以判定出该当前帧子任务的总耗时并未满足该条件3。
函数处理设备在按照上述过程判断当前帧子任务的总耗时满足上述提及的一个或多个条件,便能够确定当前帧子任务的总耗时满足预设判定条件,具体可以参照图11示出的对热点函数进行判定的示意图进行理解。譬如,当前帧子任务的总耗时满足前述提及的条件2。这样,函数处理设备在当前帧子任务的总耗时满足预设判定条件的情况下,能够确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数。
需说明,预设判定条件除了包括上述提及的3个条件以外,在实际应用中还可以包括其他的条件,具体本申请实施例中不做限定。
在一些可选的示例中,函数处理设备还可以在确定出热点函数之后,记录运行当前帧子任务时的每个第一运行函数的函数标识。通过该方式,基于函数标识能够快速定位到热点函数。
在另一些可选的示例中,函数处理设备还可以比较该待分析任务中不同文件的分析结果之间的差异。示例性地,函数处理设备还可以获取待分析任务的第二文件,第二文件包括至少一个第二运行函数以及每个第二运行函数的函数信息,每个函数信息用于指示在运行每一帧子任务时对应的第二运行函数的运行情况。需说明,此处所提及的第二文件与第一文件之间的区别在于获取时间上存在差异。函数处理设备再对运行每一帧子任务时的一个或多个第二运行函数的函数信息进行解析处理,得到第二分析结果。需说明,第二分析结果用于指示运行每一帧子任务时对应的第二运行函数的函数性能情况。另外,此处如何解析得到第二分析结果,可以参照前述步骤502所描述的内容进行理解,此处不做赘述。这样,函数处理设备在解析得到第二分析结果后,再基于第一分析结果和第二分析结果确定比较结果,比较结果用于指示运行每一帧子任务时的第一运行函数与第二运行函数之间的函数运行性能差异。譬如说,可以分析运同一帧子任务时第一运行函数与第二运行函数之间的运行耗时差异、调用次数差异等等。这样,函数处理设备能够基于比较结果对第一运行函数和第二运行函数进行分析处理。
举例来说,图12示出了本申请实施例提供的分析结果的对比示意图。如图12所示,以文件标识为176214的第二文件、以文件标识为176217的第一文件为例,针对同一个函数名称为“TG_PrePhysics”的运行函数,从第二分析结果中可以获知耗时均值为12.941ms,调用次数均值为2次;而从第一分析结果中可以获知相应的耗时均值为8.899ms,调用次数均值为2次。
需说明,针对图12中示出的其他运行函数,其比较结果也可以参照该“TG_PrePhysics”运行函数的比较结果进行理解,此处不做赘述。
在一些可选的示意中,函数处理设备还可以将比较结果存储至远程存储介质中。通过该方式,能够避免对函数处理设备的硬盘的频繁访问。
举例来说,针对前述图2中示出的存储入库的过程,可以参照图13示出的数据存储的示意图进行理解。如图13所示,可以通过express-fileupload文件存储服务将前述提及得到第一文件或者第二文件等存储至存储服务器中。这样,函数处理设备在对第一文件或者第二文件进行解析时,也可以从该存储服务器中获得第一文件或第二文件。另外,在进行解析的过程中,函数处理设备也可以将解析过程中的各类数据,例如前述提及的第一分析结果、第二分析结果等数据,通过MySqlUE4插件等进行各类入库处理。示例性地,函数处理设备也可以通过MyCat抽象层进行路由,进而在数据存储过程中将同一个路由的数据存储在相同的数据库中,便于对数据库进行分布式管理。示意性地,在直接进行数据库的操作前,还可以通过将数据存储在Redis缓存中,避免了对服务器硬盘的频繁访问。
本申请实施例中,获取待分析任务的第一文件,并且该第一文件中包括至少一个第一运行函数以及每个第一运行函数的函数信息,待分析任务包括N帧子任务。所提及的每个函数信息用于指示在运行每一帧子任务时对应的第一运行函数的运行情况。这样,再对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果。通过第一分析结果,能够反映出运行每一帧子任务时对应的第一运行函数的函数性能情况。这样,再基于第一分析结果,从一个或多个第一运行函数中确定对应帧的子任务中的热点函数。通过上述方式,在获得待分析任务的第一文件后,能够对该第一文件中运行每一帧子任务的运行函数的函数信息进行解析,从而基于各自的分析结果来确定各个帧的子任务中的热点函数,实现对待分析任务中的热点函数进行全量自动化分析,避免人工逐帧分析,省去了人工逐帧分析时的时间和人力成本,极大地提高了热点分析效率。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。可以理解的是为了实现上述功能,包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本申请中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
下面对本申请实施例中的函数处理装置进行详细描述,图14为本申请实施例中提供的函数处理装置的一个实施例示意图。如图14所示,该函数处理装置可以包括获取单元1401和处理单元1402。
其中,获取单元1401,用于获取待分析任务的第一文件,第一文件包括至少一个第一运行函数以及每个第一运行函数的函数信息,每个函数信息用于指示在运行每一帧子任务时对应的第一运行函数的运行情况,待分析任务包括N帧子任务,N为大于或等于1的整数。处理单元1402,用于对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果,第一分析结果用于指示运行每一帧子任务时对应的第一运行函数的函数性能情况。处理单元1402,用于基于第一分析结果,从一个或多个第一运行函数中确定对应帧子任务中的热点函数。
在一些可选的实施方式中,第一分析结果包括运行耗时信息;处理单元1402用于:对运行当前帧子任务时的每个第一运行函数的运行耗时信息进行求和,得到当前帧子任务的总耗时,当前帧子任务为N帧子任务中的任意一帧子任务;在当前帧子任务的总耗时满足预设判定条件时,确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数。
在另一些可选的实施方式中,预设判定条件包括以下条件中的一个或多个,即:述当前帧子任务的总耗时大于至少P倍的当前帧子任务的平均耗时,P为大于或等于2的整数;当前帧子任务的总耗时大于至少Q倍的第一子任务的平均耗时,第一子任务包括在当前帧子任务之前的至少前M帧子任务,M、Q为大于或等于2的整数;当前帧子任务的总耗时大于预设耗时阈值。
在另一些可选的实施方式中,处理单元1402还用于:在当前帧子任务的总耗时满足预设判定条件时,确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数之前,统计运行当前帧子任务时的第一运行函数的函数数目;基于当前帧子任务的总耗时和运行当前帧子任务时第一运行函数的函数数目,确定当前帧子任务的平均耗时。
在另一些可选的实施方式中,处理单元1402还用于:在当前帧子任务的总耗时满足预设判定条件时,确定运行当前帧子任务时的每个第一运行函数为当前帧子任务中的热点函数之前,统计至少前M帧子任务中运行每帧子任务时的第一运行函数的函数数目,并对至少前M帧子任务中运行每帧子任务时的第一运行函数的函数数目进行求和,得到运行第一子任务时的函数数目;对前M帧子任务中运行每帧子任务时的第一运行函数的运行耗时信息进行求和,得到第一子任务的总耗时;基于第一子任务的总耗时和第一子任务的函数数目,确定第一子任务的平均耗时。
在另一些可选的实施方式中,处理单元1402还用于:在基于第一分析结果,从一个或多个第一运行函数中确定对应帧子任务中的热点函数之后,记录运行当前帧子任务时的每个第一运行函数的函数标识。
在另一些可选的实施方式中,获取单元1401还用于:在基于运行每一帧子任务时的每个第一运行函数的运行分析结果,从一个或多个第一运行函数中确定对应帧子任务中的热点函数之后,获取待分析任务的第二文件,第二文件包括至少一个第二运行函数以及每个第二运行函数的函数信息,每个函数信息用于指示在运行每一帧子任务时对应的第二运行函数的运行情况。处理单元1402,用于对运行每一帧子任务时的一个或多个第二运行函数的函数信息进行解析处理,得到第二分析结果,第二分析结果用于指示运行每一帧子任务时对应的第二运行函数的函数性能情况;基于第一分析结果和第二分析结果确定比较结果,比较结果用于指示运行每一帧子任务时的第一运行函数与第二运行函数之间的函数运行性能差异;基于比较结果对第一运行函数和第二运行函数进行分析处理。
在另一些可选的实施方式中,处理单元1402还用于:基于第一分析结果和第二分析结果确定比较结果之后,将比较结果存储至远程存储介质中。
在另一些可选的实施方式中,获取单元1401还用于:对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果之前,获取编译配置信息,并基于编译配置信息构建目标应用程序,编译配置信息用于指示运行待分析任务时的进程配置情况。处理单元1402,用于通过目标应用程序对运行每一帧子任务时的一个或多个第一运行函数的函数信息进行解析处理,得到第一分析结果。
上面从模块化功能实体的角度对本申请实施例中的函数处理装置进行描述,下面从硬件处理的角度对本申请实施例中的函数处理设备进行描述。图15是本申请实施例提供的函数处理设备的结构示意图。该函数处理设备可因配置或性能不同而产生比较大的差异,例如可以是前述图14示出的函数处理装置等。该函数处理设备可以至少一个处理器1501,通信线路1507,存储器1503以及至少一个通信接口1504。
处理器1501可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1507可包括一通路,在上述组件之间传送信息。
通信接口1504,使用任何收发器一类的装置,用于与其他装置或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器1503可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储装置,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储装置,存储器可以是独立存在,通过通信线路1507与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1503用于存储执行本申请方案的计算机执行指令,并由处理器1501来控制执行。处理器1501用于执行存储器1503中存储的计算机执行指令,从而实现本申请上述实施例提供的函数处理的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,该函数处理设备可以包括多个处理器,例如图15中的处理器1501和处理器1502。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个装置、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,该函数处理设备还可以包括输出设备1505和输入设备1506。输出设备1505和处理器1501通信,可以以多种方式来显示信息。输入设备1506和处理器1501通信,可以以多种方式接收目标对象的输入。例如,输入设备1506可以是鼠标、触摸屏装置或传感装置等。
上述的该函数处理设备可以是一个通用装置或者是一个专用装置。在具体实现中,该函数处理设备可以是服务器、终端等或有图15中类似结构的装置。本申请实施例不限定该函数处理设备的类型。
需说明,图15中的处理器1501可以通过调用存储器1503中存储的计算机执行指令,使得函数处理设备执行如图3对应的方法实施例中的方法。
具体的,图14中的处理单元1402的功能/实现过程可以通过图15中的处理器1501调用存储器1503中存储的计算机执行指令来实现。图14中的获取单元1401的功能/实现过程可以通过图15中的通信接口1504来实现。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种函数处理的方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种函数处理的方法的部分或全部步骤。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
上述实施例,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如SSD))等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种函数处理的方法,其特征在于,包括:
获取待分析任务的第一文件,所述第一文件包括至少一个第一运行函数以及每个所述第一运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第一运行函数的运行情况,所述待分析任务包括N帧所述子任务,N为大于或等于1的整数;
对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果,所述第一分析结果用于指示运行每一帧所述子任务时对应的所述第一运行函数的函数性能情况;
基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数。
2.根据权利要求1所述的方法,其特征在于,所述第一分析结果包括运行耗时信息;基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数,包括:
对运行当前帧子任务时的每个所述第一运行函数的运行耗时信息进行求和,得到所述当前帧子任务的总耗时,所述当前帧子任务为所述N帧子任务中的任意一帧子任务;
在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数。
3.根据权利要求2所述的方法,其特征在于,所述预设判定条件包括以下条件中的一个或多个,即:
所述当前帧子任务的总耗时大于至少P倍的所述当前帧子任务的平均耗时,P为大于或等于2的整数;
所述当前帧子任务的总耗时大于至少Q倍的第一子任务的平均耗时,所述第一子任务包括在所述当前帧子任务之前的至少前M帧子任务,M、Q为大于或等于2的整数;
所述当前帧子任务的总耗时大于预设耗时阈值。
4.根据权利要求3所述的方法,其特征在于,在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数之前,所述方法还包括:
统计运行所述当前帧子任务时的所述第一运行函数的函数数目;
基于所述当前帧子任务的总耗时和运行所述当前帧子任务时所述第一运行函数的函数数目,确定所述当前帧子任务的平均耗时。
5.根据权利要求3所述的方法,其特征在于,在所述当前帧子任务的总耗时满足预设判定条件时,确定运行所述当前帧子任务时的每个所述第一运行函数为所述当前帧子任务中的热点函数之前,所述方法还包括:
统计所述至少前M帧子任务中运行每帧所述子任务时的所述第一运行函数的函数数目,并对所述至少前M帧子任务中运行每帧所述子任务时的第一运行函数的函数数目进行求和,得到运行所述第一子任务时的函数数目;
对所述前M帧子任务中运行每帧所述子任务时的所述第一运行函数的运行耗时信息进行求和,得到所述第一子任务的总耗时;
基于所述第一子任务的总耗时和所述第一子任务的函数数目,确定所述第一子任务的平均耗时。
6.根据权利要求2至5中任一项所述的方法,其特征在于,在基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数之后,所述方法还包括:
记录运行所述当前帧子任务时的每个所述第一运行函数的函数标识。
7.根据权利要求1至5中任一项所述的方法,其特征在于,在基于运行每一帧所述子任务时的每个所述第一运行函数的运行分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数之后,所述方法还包括:
获取所述待分析任务的第二文件,所述第二文件包括至少一个第二运行函数以及每个所述第二运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第二运行函数的运行情况;
对运行每一帧所述子任务时的一个或多个所述第二运行函数的函数信息进行解析处理,得到第二分析结果,所述第二分析结果用于指示运行每一帧所述子任务时对应的所述第二运行函数的函数性能情况;
基于所述第一分析结果和所述第二分析结果确定比较结果,所述比较结果用于指示运行每一帧所述子任务时的所述第一运行函数与所述第二运行函数之间的函数运行性能差异;
基于所述比较结果对所述第一运行函数和所述第二运行函数进行分析处理。
8.根据权利要求7所述的方法,其特征在于,所述基于所述第一分析结果和所述第二分析结果确定比较结果之后,所述方法还包括:
将所述比较结果存储至远程存储介质中。
9.根据权利要求1至5中任一项所述的方法,其特征在于,所述对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果之前,所述方法还包括:
获取编译配置信息,并基于所述编译配置信息构建目标应用程序,所述编译配置信息用于指示运行所述待分析任务时的进程配置情况;
对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果,包括:
通过所述目标应用程序对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果。
10.一种函数处理装置,其特征在于,包括:
获取单元,用于获取待分析任务的第一文件,所述第一文件包括至少一个第一运行函数以及每个所述第一运行函数的函数信息,每个所述函数信息用于指示在运行每一帧子任务时对应的所述第一运行函数的运行情况,所述待分析任务包括N帧所述子任务,N为大于或等于1的整数;
处理单元,用于对运行每一帧所述子任务时的一个或多个所述第一运行函数的函数信息进行解析处理,得到第一分析结果,所述第一分析结果用于指示运行每一帧所述子任务时对应的所述第一运行函数的函数性能情况;
所述处理单元,用于基于所述第一分析结果,从所述一个或多个所述第一运行函数中确定对应帧所述子任务中的热点函数。
11.一种函数处理设备,其特征在于,包括:输入/输出接口、处理器和存储器,所述存储器中存储有程序指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1至9中任一所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至9中任一项所述的方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品包括指令,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361995.XA CN117668424A (zh) | 2023-10-19 | 2023-10-19 | 一种函数处理的方法、装置、设备、存储介质及程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311361995.XA CN117668424A (zh) | 2023-10-19 | 2023-10-19 | 一种函数处理的方法、装置、设备、存储介质及程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117668424A true CN117668424A (zh) | 2024-03-08 |
Family
ID=90070256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311361995.XA Pending CN117668424A (zh) | 2023-10-19 | 2023-10-19 | 一种函数处理的方法、装置、设备、存储介质及程序产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117668424A (zh) |
-
2023
- 2023-10-19 CN CN202311361995.XA patent/CN117668424A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4379551A1 (en) | Data processing method and apparatus based on edge computing, and device and storage medium | |
CN109067890B (zh) | 一种基于docker容器的CDN节点边缘计算系统 | |
CN112257135B (zh) | 一种基于多线程的模型加载方法、装置、存储介质及终端 | |
CN111506434B (zh) | 一种任务处理方法、装置及计算机可读存储介质 | |
CN112241331B (zh) | 一种基于深度神经网络的移动Web任务动态迁移方法 | |
CN107526645A (zh) | 一种通信优化方法及系统 | |
CN111400000A (zh) | 网络请求处理方法、装置、设备和存储介质 | |
US20240296314A1 (en) | Generative artificial intelligence (ai) system | |
US20240296316A1 (en) | Generative artificial intelligence development system | |
US20240296315A1 (en) | Artificial intelligence prompt processing and storage system | |
Li et al. | An intelligent collaborative inference approach of service partitioning and task offloading for deep learning based service in mobile edge computing networks | |
CN111298434B (zh) | 业务处理方法、装置、设备及存储介质 | |
CN112448833A (zh) | 一种多管理域的通信方法和装置 | |
CN117668424A (zh) | 一种函数处理的方法、装置、设备、存储介质及程序产品 | |
CN108829516A (zh) | 一种图形处理器资源虚拟化调度方法 | |
CN116456496B (zh) | 资源调度的方法、存储介质及电子设备 | |
Zhang et al. | Delay-sensitive computation partitioning for mobile augmented reality applications | |
US12088817B2 (en) | Data coding method and apparatus, and computer-readable storage medium | |
CN115454576B (zh) | 一种虚拟机进程管理方法、系统及电子设备 | |
CN117170886A (zh) | 一种面向大连接视频分析的连续学习资源调度方法及装置 | |
CN112506622B (zh) | 面向云手机的gpu计算性能的预测方法及装置 | |
CN116450347A (zh) | 视频的多任务处理方法、视频分析设备和存储介质 | |
CN114201282A (zh) | 一种实时渲染计算的动态任务调度方法 | |
CN115599533A (zh) | 任务处理方法、装置、设备以及存储介质 | |
CN117651075B (zh) | 任务消息传输方法、装置、计算机设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |