一种优化程序编译的方法、装置、电子设备和存储介质与流程
未命名
09-13
阅读:75
评论:0

1.本技术涉及计算机技术领域,尤其涉及一种优化程序编译的方法、装置、电子设备和存储介质。
背景技术:
2.随着计算机技术的快速发展,对象可以基于电子设备对应的编译器对应配置的性能优化方法(profile-guided optimization,pgo),对程序进行优化,这样,可以优化针对程序的优化流程,提升对程序的优化效率。
3.目前,存在多种不同的程序,且同一程序存在不同版本,那么,不同程序的不同版本对应的配置不同。这样,当编译器需要对新的程序进行优化时,需要基于新的程序的程序信息和当前版本信息所对应确定的配置进行编译器的pgo优化,因此需要确定新的配置,以实施新的pgo对前述的新的程序进行优化。
4.具体的,相关技术下一般采用以下两个步骤实施pgo:
5.步骤1:电子设备接收待编译的代码文件,基于编译器对代码文件中的代码进行插桩编译,运行插桩编译的程序后,获得配置(profile)文件,其中,该profile文件为程序运行时的数据信息,以文件的形式写入磁盘所获得的。
6.步骤2:电子设备对profile文件进行预处理,获得预处理文件,并对预处理文件进行分析,从而根据分析结果,确定代码文件对应的程序进行极限优化的策略,并基于策略对程序进行优化,使得程序更加符合运行时的要求。其中,该预处理文件符合编译器的读取要求。
7.显然,相关技术下,每次实施pgo时,电子设备均需要产生和获取profile文件,以及对其进行预处理,使得整个pgo实施过程较为复杂,导致整个编译流程较长,降低优化程序编译的效率;并且,相关技术下并未对profile文件进行管理,导致后续获取profile文件对程序进行优化时,可能无法快速获取对应的profile文件,导致对优化程序编译的效率较低。
技术实现要素:
8.本技术实施例中提供了一种优化程序编译的方法、装置、电子设备和存储介质,用于提高优化程序编译的效率。
9.一方面,提供一种优化程序编译的方法,所述方法包括:
10.采用编译工具对待编译代码文件进行编译,获得原始程序,并运行所述原始程序,获得所述原始程序的配置profile文件;
11.基于所述编译工具对应的配置信息,确定目标数据管理服务器,并将所述profile文件和所述原始程序的描述信息,传输至所述目标数据管理服务器;以使所述目标数据管理服务器,对所述profile文件进行格式化处理,获得第一版本格式化文件,并将所述第一版本格式化文件,和所述原始程序对应的各历史版本格式化文件,进行关联保存;
12.基于从所述目标数据管理服务器中获取的,所述第一版本格式化文件和至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。
13.一方面,提供一种优化程序编译的装置,所述装置包括:
14.获得单元,用于采用编译工具对待编译代码文件进行编译,获得原始程序,并运行所述原始程序,获得所述原始程序的配置profile文件;
15.处理单元,用于基于所述编译工具对应的配置信息,确定目标数据管理服务器,并将所述profile文件和所述原始程序的描述信息,传输至所述目标数据管理服务器;以使所述目标数据管理服务器,对所述profile文件进行格式化处理,获得第一版本格式化文件,并将所述第一版本格式化文件,和所述原始程序对应的各历史版本格式化profile文件,进行关联保存;
16.优化单元,用于基于从所述目标数据管理服务器中获取的,所述第一版本格式化文件和至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。
17.一方面,提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行上述优化程序编译的方法。
18.一方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述优化程序编译的方法。
19.本技术实施例提供一种计算机可读存储介质,其包括程序代码,当所述程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行上述任意一种优化程序编译的方法。
20.本技术有益效果如下:
21.本技术实施例提供的优化程序编译的方法、装置、电子设备和存储介质,由于电子设备将原始程序的profile文件和原始程序的描述信息,传输至目标数据管理服务器,以使目标数据管理服务器,对profile文件进行格式化处理,获得第一版本格式化文件,并将第一版本格式化文件,和原始程序对应的各历史版本格式化profile文件,进行关联保存。这样,电子设备可以基于从目标数据管理服务器中获取的,第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得相应的目标程序。
22.可见,本技术实施例中无需电子设备对原始程序的profile文件进行格式化处理,直接从目标数据关联服务器中,获取原始程序对应的第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,从而获得相应的目标程序,提高程序优化编译的效率。
23.本技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本技术而了解。本技术的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
24.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相
关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
25.图1为现有技术中的一种优化程序编译的流程示意图;
26.图2为本技术实施例中的一种应用场景的一个可选的示意图;
27.图3为本技术实施例中的一种优化程序编译的系统框架的一个可选的示意图;
28.图4为本技术实施例中的一种优化程序编译的方法的流程示意图;
29.图5为本技术实施例中的一种编译工具的功能的一个可选的示意图;
30.图6为本技术实施例中的一种生成配置文件的一个可选的示意图;
31.图7为本技术实施例中的一种生成配置文件的又一个可选的示意图;
32.图8为本技术实施例中的一种数据管理服务器对配置文件进行管理的示意图;
33.图9为本技术实施例中的一种获取历史版本格式化文件的示意图;
34.图10为本技术实施例中的一种本地缓存和目标数据管理服务器缓存格式化文件的示意图;
35.图11为本技术实施例中的又一种本地缓存和目标数据管理服务器缓存格式化文件的示意图;
36.图12为本技术实施例中的一种优化程序编译的方法的示意图;
37.图13为本技术实施例中的一种优化程序编译的装置的组成结构示意图;
38.图14为本技术实施例中的一种电子设备的一个硬件组成结构示意图。
具体实施方式
39.为使本技术的目的、技术方案和优点更加清楚明白,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
40.本技术的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本技术实施例不做限制。
41.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
42.为便于理解本技术实施例提供的技术方案,这里先对本技术实施例涉及的一些关键名词进行解释:
43.1、编译器:编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。在编译的过程中,编译器可以对源代码进行优化和修改,提高程序的性能和产生一些额外的功能。
44.2、编译工具:编译工具是一种自动化建构软件。具体的,编译工具可以被用来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。例如c\c++的编译工具是make,第四代虚幻引擎的编译工具是ubt等等。此外,它也根据依赖文件的修改时间进行依赖关系的判断,从而实现检查文件的依赖关系的功能,当然,它还可以调用一些外部软件来完成编译任务。
45.3、性能优化方法:在本技术中,性能优化方法称为(profile-guided optimization,pgo),(profile-directed feedback,pdf),或者(feedback-directed optimization,fdo)、pogo等等,是使用程序运行时数据优化程序性能的一种方法。
46.4、profile:程序运行时的数据信息,可能包括对象创建的数量、函数的调用信息、指令信息等,是对程序运行状态的统计。
47.5、配置(profile)文件:将程序运行时的数据信息以文件的形式写入磁盘。
48.6、插桩编译:在编译代码时,编译器会在程序中插入代码以此来统计程序运行的状况,一般情况下会在程序结束时生成profile文件。
49.7、配置引导优化编译:在编译代码时,将profile文件提供给编译器。
50.8、软件开发工具包(software development kit,sdk):指一些被软件工程师用于为特定的软件包、软件框架、硬件平台及操作系统等创建应用软件的开发工具之集合。在本文中,pgo service plugin可以理解为sdk。
51.9、应用程序接口(application programming interface,api):是一种计算接口,它定义多个软件中介之间的交互,以及可以进行的调用(call)或请求(request)的种类,如何进行调用或发出请求,应使用的数据格式,应遵循的惯例等。
52.10、第四代虚幻引擎(unreal engine 4generation,ue):该引擎主要是为了开发第一人称射击游戏而设计,但目前它已经被成功地应用于开发潜行类游戏、格斗游戏、角色扮演游戏等多种不同类型的游戏。
53.目前,可以实施pgo优化的阶段是编译、链接、甚至是链接后期。具体的,在编译期可使用proflie进行优化的场景包括寄存器分配、代码块重排等。在链接期可使用proflie进行优化的场景包括间接调用优化,启发式引用等。通过这些优化可以使程序运行更加有效率,提高程序对内存和执行器的使用效率。
54.相关技术下的各种编译器都提供pgo优化,但是,不同的编译器pgo的方式方法、效果略有差异;并且,由于运行时产生的数据往往是基于特定场景、特定平台所产生的,因此,若采用运行时产生的数据对通用的程序进行优化可能会导致负优化的情况出现。
55.目前,请参阅图1所示,相关技术下pgo构建的流程一般分为2个大步骤。具体的,第一个步骤是进行插桩编译,且插桩编译后运行的程序,结束时会产生profile文件。其中,profile文件是对当次程序运行数据的详细统计;并且,通过profile文件我们可以知道程序中对象创建的数量、函数调用的次数、循环执行的次数等信息。此外,在获取profile文件后,需要人工操作对其进行预处理,使profile文件符合编译器的读取要求。
56.具体的,第二个步骤是进行pgo编译。在具体的实施过程中,需要人工对profile文
件进行筛选,即选择对程序进行优化的profile文件,且在选择确定目标profile文件后,需要人工将目标profile文件进行拷贝,然后,在编译时编译器才可以读取拷贝的目标profile文件和代码源文件,然后通过对profile数据的分析,确定对程序进行极限优化的策略,使程序更加符合运行时的要求。
57.可见,收集profile文件和预处理也是一个比较复杂的过程,这样,会导致整个pgo构建过程较为复杂,导致整个编译流程较长,降低优化程序编译的效率;并且,相关技术下并未对profile文件进行管理,导致后续获取profile文件对程序进行优化时,可能无法快速获取对应的profile文件,导致对优化程序编译的效率较低。
58.鉴于此,本技术实施例中,提供了一种优化程序编译的方法,通过该方法,电子设备可以将运行插装编译后的程序生成的profile文件,自动进行上传,不需要借助运维部署的传输同步脚步。以及,目标数据管理服务器会自动对profile进行预处理即格式化处理,还可以根据上传profile的属性进行项目、版本的管理。这样,在极限编译步骤时,无需手动再输入profile文件,电子设备会控制编译工具自动根据策略使用本地缓存的profile文件或者到目标数据管理服务器去获取第一版本格式化文件以及至少一个历史版本格式化文件。这样,电子设备可以简单且高效的获取第一版本格式化文件以及至少一个历史版本格式化文件,从而提升优化程序编译的效率。
59.在介绍完本技术实施例的设计思想之后,下面对本技术实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本技术实施例而非限定。在具体实施过程中,可以根据实际需要灵活地应用本技术实施例提供的技术方案。
60.本技术实施例中提供的可以适用于大多数需要进行优化程序编译的处理的场景,例如对游戏类程序进行编译以及优化,或者对服务类程序进行编译以及优化等等。
61.参阅图2所示,为本技术实施例提供的一种场景示意图。在该场景示意图中,包括电子设备201和数据管理服务器202。其中,电子设备201例如可以为手机、平板电脑(pad)、个人计算机(personal computer,pc)、智能电视、智能手表、智能音箱、智能车载设备以及可穿戴设备等,但并不局限于此。其中,每个电子设备201均可以包括一个或多个处理器2011、存储器2012以及与服务器交互的i/o接口2013等。
62.在本技术实施例中,数据管理服务器202可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是以提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
63.其中,电子设备201和数据管理服务器202之间,以及各个电子设备201之间均可以通过一个或者多个网络203进行直接或间接的通信连接。该网络203可以是有线网络,也可以是无线网络,例如无线网络可以是移动蜂窝网络,或者可以是无线保真(wireless-fidelity,wifi)网络,当然还可以是其他可能的网络,本技术实施例对此不做限制。
64.在本技术实施例中,电子设备201可以与数据管理服务器202之间进行交互,从而实现本技术提供的优化程序编译的方案。需要说明的是,在实际实施过程中,可以是多个电子设备201与一个数据管理服务器202之间进行交互,也可以是多个电子设备201与多个数
据管理服务器202之间交互,本技术对此不做限制。
65.在本技术实施例中,电子设备201可以确定待编译代码文件,然后确定待编译代码文件对应的编译工具,并控制编译工具对待编译代码文件进行插装编译,获得原始程序,再运行原始程序,获得配置文件。进一步地,电子设备201可以基于编译工具的配置信息确定数据管理服务器202,并向数据管理服务器202发送配置文件和原始程序的描述信息。从而,数据管理服务器202可以对接收的配置文件进行格式化处理,获得第一版本格式化文件,然后可以根据原始程序的描述信息,确定原始程序对应的至少一个历史版本格式化文件,再将第一版本格式化文件和至少一个历史版本格式化文件进行关联保存。进而,电子设备201可以从数据管理服务器202中,获取第一版本格式化文件和至少一个历史版本格式化文件,然后基于第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得相应的目标程序。
66.请参阅图3,图3为本技术实施例提供的优化编译程序的系统架构示意图。其中,该系统架构示意图包括:确定模块301,用于确定待编译代码文件,以及确定与待编译代码文件对应的编译工具;编译模块302,用于对待编译代码文件进行编译,且可以基于电子设备的控制在插装编译和极限编译之间进行切换;以及,编译模块302还可以透传目标数据管理服务器的相关信息,且可以基于电子设备的控制获取目标数据管理器中的格式化文件;数据管理模块303,用于对上传的配置文件进行格式化处理,且对获得的格式化文件进行版本的管理。
67.在本技术实施例中,可以基于上述确定模块301、编译模块302以及数据管理模块303协同实现本技术提供的优化程序编译的方案。
68.参阅图4所示,为本技术实施例提供的一种优化程序编译的方法的实施流程图,该方法可以由电子设备执行,具体实施流程如下:
69.步骤401:采用编译工具对待编译代码文件进行编译,获得原始程序,并运行原始程序,获得原始程序的配置profile文件。
70.在本技术实施例中,在执行步骤301之前,电子设备可以基于待编译代码文件的类型信息,确定与待编译代码文件对应的编译工具;其中,编译工具的配置信息至少包括数据管理服务器的地址信息和接口信息。
71.具体的,电子设备可以根据待编译代码文件的类型信息,确定与待编译代码文件对应的编译工具。例如,确定该待编译代码文件为游戏类代码文件时,则可以确定编译工具为ubt。需要说明的是,后文中以编译工具为ubt为例进行说明。
72.请参阅图5所示,为本技术实施例中示出的编译工具的功能示意图。在本技术实施例中,可以对编译工具进行优化,例如为编译工具进行配置文件的优化。具体的,在ubt的配置文件中,可以预先配置数据管理服务器(pgo service)的相关信息和待编译代码文件对应的程序的描述信息。
73.具体的,数据管理服务器的信息包括地址信息(service ip)和接口信息(service port)。在具体的实施过程中,电子设备可以预先在ubt的配置文件中配置数据管理服务器的相关信息,例如目标数据管理服务器的地址信息和接口信息,这样,可以基于目标数据管理服务器的地址信息和接口信息,从多个数据管理服务器中,确定目标数据管理服务器。
74.具体的,程序的描述信息包括项目名称(project name)和当前版本(version)。示
例性的,程序的描述信息例如是“project.target.cs”。这样,电子设备可以基于程序的描述信息,从目标数据管理服务器中,准确获取程序对应的格式化文件。需要说明的是,在本技术实施例中,为了便于描述,将对profile文件进行格式化处理后获得文件,称作格式化文件。
75.在本技术实施例中,当确定编译工具即ubt之后,电子设备可以通过ubt实现插桩编译和极限编译两种编译模式的切换。其中,插装编译可以理解为生成profile文件的编译过程,极限编译可以理解为基于格式化profile文件对程序进行优化的编译过程。
76.具体的,在插桩编译阶段,前述的数据管理服务器的相关信息和程序的描述信息会传递到代码中,这样,程序在运行时可以通过数据管理服务器的相关信息,将运行数据和程序的描述信息传输到数据管理服务器中。
77.具体的,在优化编译阶段,电子设备可以通过ubt以及pgo service信息,远程获取格式化文件。需要说明的是,格式化profile文件的大小和程序的负载度相关。
78.可见,在本技术实施例中,可以对编译工具进行优化,这样,可以控制编译工具将数据管理服务器的相关信息,在插桩编译和极限优化编译两个编译过程上无感应用,从而使得后续profile数据的上传和获取均对开发对象透明,从而提高pgo构建的便利性
。
79.在本技术实施例中,当确定编译工具之后,可以采用编译工具对待编译代码文件进行编译,获得原始程序,并运行原始程序,获得原始程序的配置profile文件。
80.在一种可能的实施方式中,请参阅图6所示,通过在编译时,电子设备控制编译器在运行原始程序结束之前,注入一段代码,从而使得程序运行时收集的运行数据以文件的形式落地到磁盘,以获得profile文件。这样的方式,可以更简答高效的获取profile文件。
81.然而,考虑到相关技术下,需要一些人工操作,实现pgo构建的某些步骤,因此考虑采用自动化流水线编译,但是自动化流水线进行编译时,存在每一个项目的编译流水线都各自的流程,很难标准化的问题,且在不同的环境中需要部署额外的脚本来收集profile文件的问题,以及,由于每一次运行都会产生一个profile文件,从而如果无限制的增加,可能会导致机器磁盘爆满的问题,可见,相关技术下对获取和管理profile文件存在一些问题,导致降低优化程序编译的效率。
82.鉴于此,本技术中提供了一种新的获得原始程序的配置profile文件的方式。在本技术实施例中,可以为程序侧提供一种sdk,该sdk例如称作pgo service plugin。具体的,pgo service plugin可以提供两个api,其中,一个api用于将调用此api前的profile清除,另一个api可以将当前的profile数据上报给pgo service。
83.请参阅图7所示,在本技术实施例中,电子设备可以使用sdk hook的编译器的管理profile的文件。具体的,开发对象可以基于pgo service plugin提供的api,在程序运行过程中,触发将运行数据远程传输到pgo service中的指令,从而电子设备可以在原始程序的运行过程中,响应于针对原始程序触发的截取指令,从原始程序对应的已生成的运行数据中,按照预设时长截取获得多个子数据。
84.在一种可能的实施方式中,电子设备可以在程序结束前或者程序运行中,直接将获得的多个子数据即多个profile数据远程传输到pgo service。这样,可以使程序结束时不再以文件的形式落地,避免了大量profile文件占用磁盘空间的情况。也就是说,使用本方案提供的api可以逻辑上将与运行数据划分为多个段。例如,以游戏场景为例,可以将每
个单局分割成一个段,每个段都会生成对应的运行数据,将运行数据按照逻辑段的组织形式上传至数据管理服务器。
85.可见,在本技术实施例中,运行数据不再以文件落地,直接通过程序自身将运行数据上传到数据管理服务器中。
86.在一种可能的实施方式中,电子设备可以基于多个子数据,分别确定相应的部分profile文件;基于获得的多个部分profile文件,获得原始程序的配置profile文件。具体的,电子设备可以基于多个子数据的截取顺序,确定多个部分profile文件的封装顺序;然后按照封装顺序,对多个部分profile文件进行封装,获得原始程序的配置profile文件。这样,改变了以往程序结束才生成运行时数据文件的流程,在程序运行结束时就从底层数据中获取运行数据的情况,可以提前获取多个子数据,并对程序运行期间的数据的多段运行数据进行汇总上传,且汇总上传的方式提高了运行数据上传的效率。
87.步骤402:基于编译工具对应的配置信息,确定目标数据管理服务器,并将profile文件和原始程序的描述信息,传输至目标数据管理服务器;以使目标数据管理服务器,对profile文件进行格式化处理,获得第一版本格式化文件,并将第一版本格式化文件,和原始程序对应的各历史版本格式化文件,进行关联保存。
88.在本技术实施例中,电子设备可以基于编译工具对应的配置信息,确定目标数据管理服务器。具体的,可以基于配置信息中的目标数据管理服务器的地址信息和接口信息,从多个数据管理服务器中,确定目标数据管理服务器。
89.在本技术实施例中,为了更好的介绍本技术中目标数据管理服务器对profile文件的处理和对格式化文件的管理,下面先介绍本技术提供的目标数据管理服务器的功能。
90.在本技术实施例中,如前述所介绍的,目标数据管理服务器(pgo service)是用于管理运行数据(profile)的服务对应的设备。具体的,目标数据管理服务器主要提供两个接口,其中,一个接口是用于接收pgoservice plugin上报的profile,另一个接口用于提供ubt获取profile的途径。
91.具体的,编译工具即ubt上报的profile文件中的profile或profile由于没有经过预处理,为了便于描述,将其称为raw profile,因此,当编译工具上报raw profile时,需要将raw profile和raw profile所属的程序名、版本信息即程序的描述信息,传输至目标数据管理服务器。这样,目标数据管理服务器会将profile按照程序名、版本分类管理。例如,可以理解为程序名和版本会组成key,对应profile。也就是说,目标数据管理服务器可以将程序的描述信息和对应的profile作为一对键值对进行存储。
92.在本技术实施例中,目标数据管理服务器可以对每一个上传的raw profile都会进行格式化处理,从而生成可用的profile即格式化文件。其中,格式化处理可以理解为将raw profile处理为电子设备使用的编译器可识别的文件。
93.在本技术实施例中,目标数据管理服务器可以对raw profile的格式化文件即第一版本格式化文件进行关联处理,例如将第一版本格式化文件与在其上传之前上传的上一个历史版本格式化文件进行关联,生成新的profile,即递进式的合并生成profile并保存;或者,可以将刚上传的raw profile与在其上传之前上传的至少一个历史版本格式化文件进行关联,即均保存在对应的程序对应的存储区域中,本技术对此不做限制。
94.在具体的实施过程中,考虑到如果每个程序版本均上传了大量的raw profile,目
标数据管理服务器的磁盘空间非常容易满。因此,数据管理服务器可以仅保留同一版本的最新的n个profile,这样,可以为profile的回退留足空间。其中,n为大于1的正整数,例如可以为保留同一版本的最新的3个profile,或者是最新的5个profile等。需要说明的是,前述的同一版本的最新的n个profile中的“同一版本”是指同一程序版本的第几个版本,例如安卓版本的第1个版本或ios版本的第3个版本,在本技术实施例中提供的程序优化方法,可以是针对安卓版本的程序,也可以是针对ios版本的程序,本技术实施例中对此不做限制。
95.在本技术实施例中,当电子设备调用获取profile接口时,需要将所需profile的程序名、版本传递给数据管理服务器。这样,数据管理服务器可以准确且快速的向电子设备反馈所需的格式化文件。
96.在本技术实施例中,如前所述,profile文件的大小与程序的复杂度相关。例如,一个大中型的profile文件生成的时间大约为10~30秒。生成的过程中,文件虽然创建了,但是不完整。如果将此文件传递给ubt,那么会导致灾难性的后果。因此,我们需要关注并发安全性问题。
97.请参阅图8所示,数据管理服务器对大量发送的profile文件采用的是并发读、排队写的处理方式。具体的,当没有profile文件需要进行格式化处理时,可以并发读最新的profile文件。当有profile文件需要进行格式化处理时,则并发读次新的profile文件。以及,对于需要写入数据管理服务器的格式化文件则需要进行排队,进行递进式的处理。也就是说,对同一版本的程序的并发场景,即profile文件较大,生成时间较长时,可以执行写多读少的策略。
98.可见,在本技术实施例中,数据管理服务对不同项目、不同版本的运营时数据进行自动化的管理,大大简化了运营数据的管理工作。此外,数据管理服务使用并发读排队写的并发安全策略,有效的提高了数据管理服务器的处理效率。
99.步骤403:基于从目标数据管理服务器中获取的,第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得相应的目标程序。
100.请参阅图9所示,为本技术实施例提供的获取历史版本格式化文件的示意图。在本技术实施例中,考虑到不同大小的一个格式化文件传输所消耗的时间和流量,以及数据传输的可靠性,在电子设备直接从目标数据管理服务器获取第一版本格式化文件和至少一个历史版本格式化文件之前,电子设备可以确定本地是否缓存有格式化文件,然后基于此确定获取第一版本格式化文件和至少一个历史版本格式化文件的方式。
101.例如,以tk项目为例,一个格式化文件有200mb到300mb,因此格式化文件的传输会产生较多的流量和消耗一定的传输时间。因此,可以考虑是否从本地缓存中获取所需的格式化文件。
102.可选的,当电子设备确定控制编译工具执行极限编译时,则可以确定本地缓存中是否缓存有从目标数据管理服务器中获取过的格式化文件;当确定本地缓存中缓存有格式化文件时,对格式化文件进行信息摘要处理,获得相应的缓存摘要信息;基于缓存摘要信息,确定数据管理服务器中,存在匹配的目标摘要信息时,基于本地缓存中对应的格式化文件,和从数据管理服务器中获取的第一版本格式文件,对原始程序进行优化,获得相应的目标程序;其中,目标摘要信息为至少一个历史版本格式化文件对应的摘要信息。
103.在本技术实施例中,电子设备可以对格式化文件进行信息摘要处理,示例性的,可
service信息传递给pgo service plugin。
113.进一步地,电子设备可以运行原始程序,获得profile,在程序将要结束时或者达到开发者设定的时刻时,电子设备可以自动将profile数据以及程序的描述信息即项目名称、当前版本号等信息传输到pgo service。这样,pgo service可以对raw profile进行处理,并将raw profile和新生成的格式化文件落地到pgo service的磁盘,进行管理。
114.进一步地,电子设备可以基于ubt对原始程序进行极限优化编译。具体的,ubt会根据配置好的pgo service信息,去本地缓存或pgo service获取至少一个历史版本格式化文件和第一版本格式化文件。最后,电子设备可以通过至少一个历史版本格式化文件和第一版本格式化文件对原始程序进行优化编译,生成新的程序即目标程序。
115.基于相同的发明构思,本技术实施例还提供一种优化程序编译的装置。如图13所示,其为优化程序编译的装置1300的结构示意图,可以包括:
116.获得单元1301,用于采用编译工具对待编译代码文件进行编译,获得原始程序,并运行原始程序,获得原始程序的配置profile文件;
117.处理单元1302,用于基于编译工具对应的配置信息,确定目标数据管理服务器,并将profile文件和原始程序的描述信息,传输至目标数据管理服务器;以使目标数据管理服务器,对profile文件进行格式化处理,获得第一版本格式化文件,并将第一版本格式化文件,和原始程序对应的各历史版本格式化profile文件,进行关联保存;
118.优化单元1303,用于基于从目标数据管理服务器中获取的,第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得相应的目标程序。
119.可选的,获得单元1301,具体用于:
120.在原始程序的运行过程中,响应于针对原始程序触发的截取指令,从原始程序对应的已生成的运行数据中,按照预设时长截取获得多个子数据;
121.基于多个子数据,分别确定相应的部分profile文件;
122.基于获得的多个部分profile文件,获得原始程序的配置profile文件。
123.可选的,获得单元1301,具体用于:
124.基于多个子数据的截取顺序,确定多个部分profile文件的封装顺序;
125.按照封装顺序,对多个部分profile文件进行封装,获得原始程序的配置profile文件。
126.可选的,优化单元1303,用于:
127.确定本地缓存中是否缓存有从目标数据管理服务器中获取过的格式化文件;
128.当确定本地缓存中缓存有格式化文件时,对格式化文件进行信息摘要处理,获得相应的缓存摘要信息;
129.基于缓存摘要信息,确定数据管理服务器中,存在匹配的目标摘要信息时,基于本地缓存中对应的格式化文件,和从数据管理服务器中获取的第一版本格式文件,对原始程序进行优化,获得相应的目标程序;其中,目标摘要信息为至少一个历史版本格式化文件对应的摘要信息。
130.可选的,优化单元1303还用于:
131.当确定本地缓存中未缓存格式化文件时,或者,当数据管理服务器中不存在匹配的目标摘要信息时;
132.从目标数据管理服务器中,获取第一版本格式化文件和至少一个历史版本格式化文件;
133.基于第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得相应的目标程序。
134.可选的,装置还包括确定单元,用于:
135.基于待编译代码文件的类型信息,确定与待编译代码文件对应的编译工具;其中,编译工具的配置信息至少包括数据管理服务器的地址信息和接口信息。
136.为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本技术时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
137.在介绍了本技术示例性实施方式的优化程序编译的方法和装置之后,接下来,介绍根据本技术的另一示例性实施方式的电子设备。
138.所属技术领域的技术人员能够理解,本技术的各个方面可以实现为系统、方法或程序产品。因此,本技术的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
139.与上述方法实施例基于同一发明构思,本技术实施例中还提供了一种电子设备。在该实施例中,电子设备的结构可以如图14所示,本技术实施例还提供一种电子设备,如图14所示,本技术实施例中的电子设备包括至少一个处理器1401,以及与至少一个处理器1401连接的存储器1402和通信接口1403,本技术实施例中不限定处理器1401与存储器1402之间的具体连接介质,图14中是以处理器1401和存储器1402之间通过总线1400连接为例,总线1400在图14中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1400可以分为地址总线、数据总线、控制总线等,为便于表示,图14中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
140.在本技术实施例中,存储器1402存储有可被至少一个处理器1401执行的指令,至少一个处理器1401通过执行存储器1402存储的指令,可以执行前述的优化程序编译的方法中所包括的步骤。
141.其中,处理器1401是电子设备的控制中心,可以利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器1402内的指令以及调用存储在存储器1402内的数据,实现电子设备的各种功能和对数据的处理。可选的,处理器1401可包括一个或多个处理单元,处理器1401可集成应用处理器和调制解调处理器,其中,处理器1401主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1401中。在一些实施例中,处理器1401和存储器1402可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
142.处理器1401可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
143.存储器1402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程
序、非易失性计算机可执行程序以及模块。存储器1402可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器1402是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器1402还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
144.通信接口1403是能够用于进行通信的传输接口,可以通过通信接口1403接收数据或者发送数据。
145.此外,该电子设备还包括帮助电子设备内的各个器件之间传输信息的基本输入/输出系统(i/o系统)1404、用于存储操作系统1405、应用程序1406和其他程序模块1407的大容量存储设备1408。
146.基本输入/输出系统1404包括有用于显示信息的显示器1409和用于用户输入信息的诸如鼠标、键盘之类的输入设备1410。其中显示器1409和输入设备1410都通过连接到系统总线1400的基本输入/输出系统1404连接到处理器1401。其中,基本输入/输出系统1404还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。
147.具体的,大容量存储设备1408通过连接到系统总线1400的大容量存储控制器(未示出)连接到处理器1401。其中,大容量存储设备1408及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备1408可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。
148.根据本技术的各种实施例,该电子设备还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该电子设备可以通过连接在系统总线1400上的通信接口1403连接到网络1411,或者说,也可以使用通信接口1403来连接到其他类型的网络或远程计算机系统(未示出)。
149.在一些可能的实施方式中,本技术提供的优化程序编译的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在电子设备上运行时,程序代码用于使电子设备执行本说明书上述描述的根据本技术各种示例性实施方式的优化程序编译的方法中的步骤,例如,电子设备可以执行如图4中所示的步骤。
150.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
151.本技术的实施方式的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包
括程序代码,并可以在计算装置上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
152.可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
153.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
154.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
155.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
156.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
技术特征:
1.一种优化程序编译的方法,其特征在于,所述方法包括:采用编译工具对待编译代码文件进行编译,获得原始程序,并运行所述原始程序,获得所述原始程序的配置profile文件;基于所述编译工具对应的配置信息,确定目标数据管理服务器,并将所述profile文件和所述原始程序的描述信息,传输至所述目标数据管理服务器;以使所述目标数据管理服务器,对所述profile文件进行格式化处理,获得第一版本格式化文件,并将所述第一版本格式化文件,和所述原始程序对应的各历史版本格式化profile文件,进行关联保存;基于从所述目标数据管理服务器中获取的,所述第一版本格式化文件和至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。2.如权利要求1所述的方法,其特征在于,所述运行所述原始程序,获得所述原始程序的配置profile文件,包括:在所述原始程序的运行过程中,响应于针对所述原始程序触发的截取指令,从所述原始程序对应的已生成的运行数据中,按照预设时长截取获得多个子数据;基于所述多个子数据,分别确定相应的部分profile文件;基于获得的多个部分profile文件,获得所述原始程序的配置profile文件。3.如权利要求2所述的方法,其特征在于,所述基于获得的多个部分profile文件,获得所述原始程序的配置profile文件,包括:基于所述多个子数据的截取顺序,确定所述多个部分profile文件的封装顺序;按照所述封装顺序,对所述多个部分profile文件进行封装,获得所述原始程序的配置profile文件。4.如权利要求1所述的方法,其特征在于,所述基于从所述目标数据管理服务器中获取的,所述第一版本格式化文件和至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序,包括:确定本地缓存中是否缓存有从所述目标数据管理服务器中获取过的格式化文件;当确定本地缓存中缓存有所述格式化文件时,对所述格式化文件进行信息摘要处理,获得相应的缓存摘要信息;基于所述缓存摘要信息,确定所述数据管理服务器中,存在匹配的目标摘要信息时,基于所述本地缓存中对应的格式化文件,和从所述数据管理服务器中获取的第一版本格式文件,对所述原始程序进行优化,获得相应的目标程序;其中,所述目标摘要信息为所述至少一个历史版本格式化文件对应的摘要信息。5.如权利要求4所述的方法,其特征在于,所述方法还包括:当确定本地缓存中未缓存所述格式化文件时,或者,当所述数据管理服务器中不存在匹配的目标摘要信息时;从所述目标数据管理服务器中,获取所述第一版本格式化文件和至少一个历史版本格式化文件;基于所述第一版本格式化文件和所述至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。6.如权利要求1-5任一项所述的方法,其特征在于,所述采用编译工具对待编译代码文件进行编译之前,所述方法包括:
基于所述待编译代码文件的类型信息,确定与所述待编译代码文件对应的编译工具;其中,所述编译工具的配置信息至少包括数据管理服务器的地址信息和接口信息。7.一种优化程序编译的装置,其特征在于,所述装置包括:获得单元,用于采用编译工具对待编译代码文件进行编译,获得原始程序,并运行所述原始程序,获得所述原始程序的配置profile文件;处理单元,用于基于所述编译工具对应的配置信息,确定目标数据管理服务器,并将所述profile文件和所述原始程序的描述信息,传输至所述目标数据管理服务器;以使所述目标数据管理服务器,对所述profile文件进行格式化处理,获得第一版本格式化文件,并将所述第一版本格式化文件,和所述原始程序对应的各历史版本格式化profile文件,进行关联保存;优化单元,用于基于从所述目标数据管理服务器中获取的,所述第一版本格式化文件和至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。8.如权利要求7所述的装置,其特征在于,所述获得单元,具体用于:在所述原始程序的运行过程中,响应于针对所述原始程序触发的截取指令,从所述原始程序对应的已生成的运行数据中,按照预设时长截取获得多个子数据;基于所述多个子数据,分别确定相应的部分profile文件;基于获得的多个部分profile文件,获得所述原始程序的配置profile文件。9.如权利要求8所述的装置,其特征在于,所述获得单元,具体用于:基于所述多个子数据的截取顺序,确定所述多个部分profile文件的封装顺序;按照所述封装顺序,对所述多个部分profile文件进行封装,获得所述原始程序的配置profile文件。10.如权利要求7所述的装置,其特征在于,所述优化单元,用于:确定本地缓存中是否缓存有从所述目标数据管理服务器中获取过的格式化文件;当确定本地缓存中缓存有所述格式化文件时,对所述格式化文件进行信息摘要处理,获得相应的缓存摘要信息;基于所述缓存摘要信息,确定所述数据管理服务器中,存在匹配的目标摘要信息时,基于所述本地缓存中对应的格式化文件,和从所述数据管理服务器中获取的第一版本格式文件,对所述原始程序进行优化,获得相应的目标程序;其中,所述目标摘要信息为所述至少一个历史版本格式化文件对应的摘要信息。11.如权利要求10所述的装置,其特征在于,所述优化单元,还用于:当确定本地缓存中未缓存所述格式化文件时,或者,当所述数据管理服务器中不存在匹配的目标摘要信息时;从所述目标数据管理服务器中,获取所述第一版本格式化文件和至少一个历史版本格式化文件;基于所述第一版本格式化文件和所述至少一个历史版本格式化文件,对所述原始程序进行优化,获得相应的目标程序。12.如权利要求7-11任一项所述的装置,其特征在于,所述装置还包括确定单元,用于:基于所述待编译代码文件的类型信息,确定与所述待编译代码文件对应的编译工具;其中,所述编译工具的配置信息至少包括数据管理服务器的地址信息和接口信息。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-6任一所述的方法的步骤。14.一种计算机可读存储介质,其特征在于,其包括程序代码,当程序产品在电子设备上运行时,所述程序代码用于使所述电子设备执行权利要求1-6中任一所述的方法的步骤。
技术总结
本申请公开了一种优化程序编译的方法、装置、电子设备和存储介质,涉及计算机技术领域,该方法为:电子设备可以采用编译工具对待编译代码文件进行编译,获得原始程序,运行原始程序获得原始程序的profile文件;将profile文件和原始程序的描述信息,传输至目标数据管理服务器,从而目标数据管理服务器,对profile文件进行格式化处理,获得第一版本格式化文件,将第一版本格式化文件和原始程序对应的各历史版本格式化profile文件,进行关联保存,进而电子设备可以基于第一版本格式化文件和至少一个历史版本格式化文件,对原始程序进行优化,获得目标程序。这样,可以快速获得版本格式化文件,提升优化程序编译的效率。提升优化程序编译的效率。提升优化程序编译的效率。
技术研发人员:周原 王亚昌
受保护的技术使用者:深圳市腾讯网域计算机网络有限公司
技术研发日:2022.03.01
技术公布日:2023/9/11
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/