CN114840217A - 一种编译方法、装置、设备及可读存储介质 - Google Patents
一种编译方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114840217A CN114840217A CN202210612259.6A CN202210612259A CN114840217A CN 114840217 A CN114840217 A CN 114840217A CN 202210612259 A CN202210612259 A CN 202210612259A CN 114840217 A CN114840217 A CN 114840217A
- Authority
- CN
- China
- Prior art keywords
- compiling
- node
- file
- source file
- target source
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000004590 computer program Methods 0.000 claims description 35
- 238000004422 calculation algorithm Methods 0.000 claims description 12
- 230000000694 effects Effects 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000026676 system process Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了计算机技术领域内的一种编译方法、装置、设备及可读存储介质。在本申请中,分布式系统中的任意节点在接收到目标源文件的编译指令后,先不进行编译,而是在当前节点中确定影响目标源文件编译的节点环境参数,并基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息,若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。本申请可避免节点进行冗长的编译工作,能够提高分布式系统中各节点的编译效率。相应地,本申请提供的一种编译装置、设备及可读存储介质,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种编译方法、装置、设备及可读存储介质。
背景技术
目前,分布式系统在处理大型计算任务(如深度学习任务)时,需要每个节点独立编译源文件。而深度学习任务、涉及FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)或者C语言的大型工程的源文件往往需要数小时才能编译完成,可见分布式系统的各个计算节点需要花费较多时间才能获得可执行的编译文件。
因此,如何提高分布式系统中各节点的编译效率,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种编译方法、装置、设备及可读存储介质,以提高分布式系统中各节点的编译效率。其具体方案如下:
第一方面,本申请提供了一种编译方法,应用于分布式系统中的任意节点,包括:
接收目标源文件的编译指令;
在当前节点中确定影响所述目标源文件编译的节点环境参数;
基于所述节点环境参数在预设编译结果库中查询所述目标源文件的编译结果信息;
若在所述预设编译结果库中查到所述编译结果信息,则基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,从所述存储位置获取所述编译文件,并在当前节点运行所述编译文件。
可选地,所述在当前节点中确定影响所述目标源文件编译的节点环境参数,包括:
获取当前节点的CPU(Central Processing Unit,中央处理器)信息以及内存信息;
将所述CPU信息和所述内存信息作为所述节点环境参数。
可选地,还包括:
若在所述预设编译结果库中未查到所述编译结果信息,则将所述节点环境参数添加至所述目标源文件,得到待编译源文件;
对所述待编译源文件进行编译,得到所述编译文件,并在当前节点运行并存储所述编译文件。
可选地,所述在当前节点运行并存储所述编译文件之后,还包括:
确定所述目标源文件的文件校验值;
将所述节点环境参数、所述目标源文件的名称、所述文件校验值以及当前节点的节点标识信息记录为所述目标源文件的编译结果信息;
将记录得到的编译结果信息上传至所述预设编译结果库。
可选地,所述将记录得到的编译结果信息上传至所述预设编译结果库之前,还包括:
将所述编译文件添加至所述编译结果信息。
可选地,所述确定所述目标源文件的文件校验值,包括:
利用哈希算法计算所述文件校验值。
可选地,所述基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,包括:
从所述编译结果信息中获取节点标识信息;
基于所述节点标识信息确定存储所述编译文件的目标节点;所述目标节点为所述分布式系统中的节点。
第二方面,本申请提供了一种编译装置,应用于分布式系统中的任意节点,包括:
接收模块,用于接收目标源文件的编译指令;
确定模块,用于在当前节点中确定影响所述目标源文件编译的节点环境参数;
查询模块,用于基于所述节点环境参数在预设编译结果库中查询所述目标源文件的编译结果信息;若在所述预设编译结果库中查到所述编译结果信息,则基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,从所述存储位置获取所述编译文件,并在当前节点运行所述编译文件。
可选地,所述确定模块具体用于:
获取当前节点的CPU信息以及内存信息;
将所述CPU信息和所述内存信息作为所述节点环境参数。
可选地,还包括:
编译模块,用于若在所述预设编译结果库中未查到所述编译结果信息,则将所述节点环境参数添加至所述目标源文件,得到待编译源文件;对所述待编译源文件进行编译,得到所述编译文件,并在当前节点运行并存储所述编译文件。
可选地,还包括:
计算模块,用于所述在当前节点运行并存储所述编译文件之后,确定所述目标源文件的文件校验值;
记录模块,用于将所述节点环境参数、所述目标源文件的名称、所述文件校验值以及当前节点的节点标识信息记录为所述目标源文件的编译结果信息;将记录得到的编译结果信息上传至所述预设编译结果库。
可选地,还包括:
记录模块具体用于在所述将记录得到的编译结果信息上传至所述预设编译结果库之前,将所述编译文件添加至所述编译结果信息。
可选地,所述计算模块具体用于:
利用哈希算法计算所述文件校验值。
可选地,查询模块具体用于:
从所述编译结果信息中获取节点标识信息;
基于所述节点标识信息确定存储所述编译文件的目标节点;所述目标节点为所述分布式系统中的节点。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的编译方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的编译方法。
通过以上方案可知,本申请提供了一种编译方法,应用于分布式系统中的任意节点,包括:接收目标源文件的编译指令;在当前节点中确定影响所述目标源文件编译的节点环境参数;基于所述节点环境参数在预设编译结果库中查询所述目标源文件的编译结果信息;若在所述预设编译结果库中查到所述编译结果信息,则基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,从所述存储位置获取所述编译文件,并在当前节点运行所述编译文件。
可见,在本申请中,分布式系统中的任意节点在接收到目标源文件的编译指令后,先不进行编译,而是在当前节点中确定影响目标源文件编译的节点环境参数,并基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息,若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。可见,本申请使用预设编译结果库提前记录了源文件的编译结果信息,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件,由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
相应地,本申请提供的一种编译装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种编译方法流程图;
图2为本申请公开的另一种编译方法流程图;
图3为本申请公开的第三种编译方法流程图;
图4为本申请公开的一种编译装置示意图;
图5为本申请公开的一种电子设备示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,分布式系统在处理大型计算任务(如深度学习任务)时,需要每个节点独立编译源文件。而深度学习任务、涉及FPGA或者C语言的大型工程的源文件往往需要数小时才能编译完成,可见分布式系统的各个计算节点需要花费较多时间才能获得可执行的编译文件。为此,本申请提供了一种编译方案,能够提高分布式系统中各节点的编译效率。
参见图1所示,本申请实施例公开了一种编译方法,应用于分布式系统中的任意节点,包括:
S101、接收目标源文件的编译指令。
在本实施例中,分布式系统中的各节点可以从代码库中获取需要编译的目标源文件。一般地,目标源文件的编译指令由用户在人机交互界面触发。
将计算机程序和数据通过网络分布在多个节点上,这些节点就可以构成分布式系统。在分布式计算环境中,数据的存储和处理可在本地工作站上进行。
S102、在当前节点中确定影响目标源文件编译的节点环境参数。
其中,影响源文件编译的节点环境参数一般包括:节点CPU核数、节点CPU型号、节点内存大小等,源文件依赖这些环境参数才能完成编译。因此在一种具体实施方式中,在当前节点中确定影响目标源文件编译的节点环境参数,包括:获取当前节点的CPU信息以及内存信息;将CPU信息和内存信息作为节点环境参数。CPU信息即:CPU核数、CPU型号等信息。内存信息即:内存大小、内存型号等信息。
需要说明的是,编译能够将源代码变成计算机可执行文件。对于大型软件、FPGA等应用,编译通常会产生很大的中间文件,并且非常浪费时间。
一般地,可以从当前节点中记录相关参数的寄存器中获取想要的节点环境参数。
S103、基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息。
S104、若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
在一种具体实施方式中,若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。由于源文件依赖节点环境参数才能完成编译,因此将节点环境参数添加至目标源文件,可使目标源文件适应当前节点的环境参数,以在当前节点上运行。
在本实施例中,分布式系统中的任意节点在接收到目标源文件的编译指令后,先不进行编译,而是在当前节点中确定影响目标源文件编译的节点环境参数,并基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息,若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件,此时对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。
需要说明的是,当前节点在进行编译工作后,可以将当前得到的编译结果信息和编译文件上传到预设编译结果库中,以便后续其他节点查询、下载。当然,当前节点也可以在本地存储当前编译得到的编译文件。因此在一种具体实施方式中,在当前节点运行并存储编译文件之后,还包括:确定目标源文件的文件校验值;将节点环境参数、目标源文件的名称、文件校验值以及当前节点的节点标识信息记录为目标源文件的编译结果信息;将记录得到的编译结果信息上传至预设编译结果库。在一种具体实施方式中,将记录得到的编译结果信息上传至预设编译结果库之前,还包括:将编译文件添加至编译结果信息。
在本实施例中,确定目标源文件的文件校验值,包括:利用哈希算法计算文件校验值。哈希算法如:MD5(Message Digest Algorithm MD5)等。MD5是用于创建128位的哈希值的哈希算法。
在一种具体实施方式中,基于编译结果信息确定目标源文件的编译文件的存储位置,包括:从编译结果信息中获取节点标识信息;基于节点标识信息确定存储编译文件的目标节点;目标节点为分布式系统中的节点。
可见,本实施例使用预设编译结果库提前记录了源文件的编译结果信息,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
参见图2所示,本申请实施例公开了另一种编译方法,应用于分布式系统中的任意节点,包括:
S201、接收目标源文件的编译指令。
S202、在当前节点中确定影响目标源文件编译的节点环境参数。
其中,影响源文件编译的节点环境参数一般包括:节点CPU核数、节点CPU型号、节点内存大小等,源文件依赖这些环境参数才能完成编译。因此在一种具体实施方式中,在当前节点中确定影响目标源文件编译的节点环境参数,包括:获取当前节点的CPU信息以及内存信息;将CPU信息和内存信息作为节点环境参数。CPU信息即:CPU核数、CPU型号等信息。内存信息即:内存大小、内存型号等信息。一般地,可以从当前节点中记录相关参数的寄存器中获取想要的节点环境参数。
S203、基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息;若在预设编译结果库中查到编译结果信息,则执行S204;若在预设编译结果库中未查到编译结果信息,则执行S205。
在本实施例中,预设编译结果库可以以数据库、数据表或其他形式存储编译结果信息。
S204、若基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
S205、将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,在当前节点运行并存储编译文件;将节点环境参数、目标源文件的名称、目标源文件的文件校验值以及当前节点的节点标识信息作为目标源文件的编译结果信息上传至预设编译结果库。
由于源文件依赖节点环境参数才能完成编译,因此将节点环境参数添加至目标源文件,可使目标源文件适应当前节点的环境参数进行编译,以在当前节点上运行。
其中,在没有将编译文件上传至预设编译结果库的情况下,将编译文件存储在节点本地,此时上传当前节点的节点标识信息到预设编译结果库,该节点标识信息可为后续编译文件的下载提供下载指引。
在本实施例中,当前节点在进行编译工作后,可以将当前得到的编译结果信息和编译文件上传到预设编译结果库中,以便其他节点以及自身后续从预设编译结果库查询、下载。当然,当前节点也可以在本地存储当前编译得到的编译文件。
可见,本实施例使用预设编译结果库提前记录了源文件的编译结果信息,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
本实施例为使分布式系统中各节点进行冗长的编译工作,预设了编译结果数据库(即上述实施例所述的编译结果库),该编译结果数据库中收集了其他节点针对某些源文件的编译结果信息。编译结果信息包括但不限于:编译源文件的节点环境参数(如节点CPU核数、节点CPU型号、节点内存大小等)、被编译的源文件的名称、被编译的源文件的文件校验值以及编译源文件的节点标识信息。
据此,各设备根据自己的环境对源文件编译完后,把编译的结果(应用程序)保留,中间文件过大将其删除,然后把编译参数(即节点环境参数)和编译结果文件汇总上传给数据库。当其他设备需要编译时,优先查询数据库,如果数据库中已有的编译结果文件及对应的编译参数能匹配上当前设备,那么当前设备就跳过编译步骤,直接下载编译结果文件,这样极大的提高了分布式计算的部署速度。
请参见图3,具体实施步骤包括:每个节点开始编译时,先查询编译结果数据库确定有没有相同参数的编译结果。如果有,就直接从其他节点下载,编译完成的应用。否则,对源文件进行编译。
其中,对源文件进行编译时,在需要编译的源文件中添加当前节点的环境参数。当前节点的环境参数添加在源代码中的参数定义处,编译器在编译时,会抓取这些参数完成本次编译。在完成编译之后,将本次编译涉及的源文件名称、源文件md5、每个文件使用的实际环境参数,记录在一份完整的编译结果输出文件中,并将编译结果输出文件上传至编译结果数据库,以便其他计算节点需要编译时,基于编译结果数据库直接获取编译结果。
可见,本实施例通过编译结果数据库比较编译参数,可使分布式系统中的各节点减少不必要的编译,提高了分布式系统中各节点的编译效率。
下面对本申请实施例提供的一种编译装置进行介绍,下文描述的一种编译装置与上文描述的一种编译方法可以相互参照。
参见图4所示,本申请实施例公开了一种编译装置,应用于分布式系统中的任意节点,包括:
接收模块401,用于接收目标源文件的编译指令;
确定模块402,用于在当前节点中确定影响目标源文件编译的节点环境参数;
查询模块403,用于基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息;若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
在一种具体实施方式中,确定模块具体用于:
获取当前节点的CPU信息以及内存信息;
将CPU信息和内存信息作为节点环境参数。
在一种具体实施方式中,还包括:
编译模块,用于若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。
在一种具体实施方式中,还包括:
计算模块,用于在当前节点运行并存储编译文件之后,确定目标源文件的文件校验值;
记录模块,用于将节点环境参数、目标源文件的名称、文件校验值以及当前节点的节点标识信息记录为目标源文件的编译结果信息;将记录得到的编译结果信息上传至预设编译结果库。
在一种具体实施方式中,还包括:
记录模块具体用于在将记录得到的编译结果信息上传至预设编译结果库之前,将编译文件添加至编译结果信息。
在一种具体实施方式中,计算模块具体用于:
利用哈希算法计算文件校验值。
在一种具体实施方式中,查询模块具体用于:
从编译结果信息中获取节点标识信息;
基于节点标识信息确定存储编译文件的目标节点;目标节点为分布式系统中的节点。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种编译装置,该装置使用预设编译结果库提前记录了源文件的编译结果信息,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种编译方法及装置可以相互参照。
参见图5所示,本申请实施例公开了一种电子设备,包括:
存储器501,用于保存计算机程序;
处理器502,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:接收目标源文件的编译指令;在当前节点中确定影响目标源文件编译的节点环境参数;基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息;若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:获取当前节点的CPU信息以及内存信息;将CPU信息和内存信息作为节点环境参数。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:确定目标源文件的文件校验值;将节点环境参数、目标源文件的名称、文件校验值以及当前节点的节点标识信息记录为目标源文件的编译结果信息;将记录得到的编译结果信息上传至预设编译结果库。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:将编译文件添加至编译结果信息。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:利用哈希算法计算文件校验值。
在本实施例中,所述处理器执行所述存储器中保存的计算机程序时,可以具体实现以下步骤:从编译结果信息中获取节点标识信息;基于节点标识信息确定存储编译文件的目标节点;目标节点为分布式系统中的节点。
在一种示例中,本实施例中的电子设备可以是服务器,具体可以包括:至少一个处理器、至少一个存储器、电源、通信接口、输入输出接口和通信总线。其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行,以实现前述任一实施例公开的编译方法中的相关步骤。本领域技术人员可以理解,本实施例中的电子设备可以包括更多或更少的组件。
本实施例中,电源用于为电子设备上的各硬件设备提供工作电压;通信接口能够为电子设备创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统、计算机程序及数据等,存储方式可以是短暂存储或者永久存储。
其中,操作系统用于管理与控制电子设备上的各硬件设备以及计算机程序,以实现处理器对存储器中数据的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序除了包括能够用于完成前述任一实施例公开的编译方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据除了可以包括源文件等数据外,还可以包括应用程序的开发商信息等数据。
当然,本实施例中的电子设备可以是终端,该终端具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
可见,本实施例中的电子设备可看作分布式系统的任一个节点,在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种编译方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的编译方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:接收目标源文件的编译指令;在当前节点中确定影响目标源文件编译的节点环境参数;基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息;若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:获取当前节点的CPU信息以及内存信息;将CPU信息和内存信息作为节点环境参数。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:确定目标源文件的文件校验值;将节点环境参数、目标源文件的名称、文件校验值以及当前节点的节点标识信息记录为目标源文件的编译结果信息;将记录得到的编译结果信息上传至预设编译结果库。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:将编译文件添加至编译结果信息。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:利用哈希算法计算文件校验值。
在本实施例中,所述处理器执行的计算机程序,可以具体实现以下步骤:从编译结果信息中获取节点标识信息;基于节点标识信息确定存储编译文件的目标节点;目标节点为分布式系统中的节点。
可见,可读存储介质中的计算机程序可以实现如下功能:使用预设编译结果库提前记录了源文件的编译结果信息,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
下面对本申请实施例提供的一种分布式系统进行介绍,下文描述的一种分布式系统与上文描述的一种编译方法、装置及设备可以相互参照。
本申请实施例公开了一种分布式系统,包括:N个节点。N为自然数。本实施例中的任意节点都可以执行上述实施例所述的方法。
在一种示例中,本实施例中的任意节点可以执行以下步骤:接收目标源文件的编译指令;在当前节点中确定影响目标源文件编译的节点环境参数;基于节点环境参数在预设编译结果库中查询目标源文件的编译结果信息;若在预设编译结果库中查到编译结果信息,则基于编译结果信息确定目标源文件的编译文件的存储位置,从存储位置获取编译文件,并在当前节点运行编译文件。
在一种示例中,本实施例中的任意节点可以执行以下步骤:获取当前节点的CPU信息以及内存信息;将CPU信息和内存信息作为节点环境参数。
在一种示例中,本实施例中的任意节点可以执行以下步骤:若在预设编译结果库中未查到编译结果信息,则将节点环境参数添加至目标源文件,得到待编译源文件;对待编译源文件进行编译,得到编译文件,并在当前节点运行并存储编译文件。
在一种示例中,本实施例中的任意节点可以执行以下步骤:确定目标源文件的文件校验值;将节点环境参数、目标源文件的名称、文件校验值以及当前节点的节点标识信息记录为目标源文件的编译结果信息;将记录得到的编译结果信息上传至预设编译结果库。
在一种示例中,本实施例中的任意节点可以执行以下步骤:将编译文件添加至编译结果信息。
在一种示例中,本实施例中的任意节点可以执行以下步骤:利用哈希算法计算文件校验值。
在一种示例中,本实施例中的任意节点可以执行以下步骤:从编译结果信息中获取节点标识信息;基于节点标识信息确定存储编译文件的目标节点;目标节点为分布式系统中的其他节点。
可见,在本实施例中,分布式系统中的任意节点在需要进行源文件编译时,先基于自身节点环境参数在预设编译结果库中进行查询,若能查到相应的编译结果信息,那么该节点就无需对当前源文件进行编译,基于查到的编译结果信息就可以直接获得想要的编译文件。在未能查到相应的编译结果信息时,节点才进行编译工作。由此可避免节点进行冗长的编译工作,提高了分布式系统中各节点的编译效率。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种编译方法,其特征在于,应用于分布式系统中的任意节点,包括:
接收目标源文件的编译指令;
在当前节点中确定影响所述目标源文件编译的节点环境参数;
基于所述节点环境参数在预设编译结果库中查询所述目标源文件的编译结果信息;
若在所述预设编译结果库中查到所述编译结果信息,则基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,从所述存储位置获取所述编译文件,并在当前节点运行所述编译文件。
2.根据权利要求1所述的方法,其特征在于,所述在当前节点中确定影响所述目标源文件编译的节点环境参数,包括:
获取当前节点的CPU信息以及内存信息;
将所述CPU信息和所述内存信息作为所述节点环境参数。
3.根据权利要求1所述的方法,其特征在于,还包括:
若在所述预设编译结果库中未查到所述编译结果信息,则将所述节点环境参数添加至所述目标源文件,得到待编译源文件;
对所述待编译源文件进行编译,得到所述编译文件,并在当前节点运行并存储所述编译文件。
4.根据权利要求3所述的方法,其特征在于,所述在当前节点运行并存储所述编译文件之后,还包括:
确定所述目标源文件的文件校验值;
将所述节点环境参数、所述目标源文件的名称、所述文件校验值以及当前节点的节点标识信息记录为所述目标源文件的编译结果信息;
将记录得到的编译结果信息上传至所述预设编译结果库。
5.根据权利要求4所述的方法,其特征在于,所述将记录得到的编译结果信息上传至所述预设编译结果库之前,还包括:
将所述编译文件添加至所述编译结果信息。
6.根据权利要求4所述的方法,其特征在于,所述确定所述目标源文件的文件校验值,包括:
利用哈希算法计算所述文件校验值。
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,包括:
从所述编译结果信息中获取节点标识信息;
基于所述节点标识信息确定存储所述编译文件的目标节点;所述目标节点为所述分布式系统中的节点。
8.一种编译装置,其特征在于,应用于分布式系统中的任意节点,包括:
接收模块,用于接收目标源文件的编译指令;
确定模块,用于在当前节点中确定影响所述目标源文件编译的节点环境参数;
查询模块,用于基于所述节点环境参数在预设编译结果库中查询所述目标源文件的编译结果信息;若在所述预设编译结果库中查到所述编译结果信息,则基于所述编译结果信息确定所述目标源文件的编译文件的存储位置,从所述存储位置获取所述编译文件,并在当前节点运行所述编译文件。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的方法。
10.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210612259.6A CN114840217A (zh) | 2022-05-31 | 2022-05-31 | 一种编译方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210612259.6A CN114840217A (zh) | 2022-05-31 | 2022-05-31 | 一种编译方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114840217A true CN114840217A (zh) | 2022-08-02 |
Family
ID=82571996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210612259.6A Pending CN114840217A (zh) | 2022-05-31 | 2022-05-31 | 一种编译方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840217A (zh) |
-
2022
- 2022-05-31 CN CN202210612259.6A patent/CN114840217A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20070079306A1 (en) | Object ordering tool for facilitating generation of firmware update friendly binary image | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
JP2016519385A (ja) | ドライバをロードする方法及び組み込みデバイス | |
CN112769706B (zh) | 组件化路由方法及系统 | |
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
EP4009162A1 (en) | Code change method and device | |
US11474796B1 (en) | Build system for distributed applications | |
CN111124872A (zh) | 基于差异代码分析的分支检测方法、装置及存储介质 | |
CN113672224A (zh) | 小程序页面代码生成方法、装置及计算机设备 | |
CN114691132A (zh) | 一种arxml文件生成方法、装置、设备及存储介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN115686606A (zh) | 一种项目依赖树的展示方法、装置、系统及介质 | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN109558121B (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
CN113961228A (zh) | 一种变更提醒方法、装置、设备及存储介质 | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN113495723B (zh) | 一种调用功能组件的方法、装置及存储介质 | |
CN109086059B (zh) | 代码加载更新方法、装置及服务器 | |
CN113791809B (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
CN113515303B (zh) | 一种项目转型方法、装置和设备 | |
CN114840217A (zh) | 一种编译方法、装置、设备及可读存储介质 | |
CN114253595A (zh) | 代码仓库管理方法、装置、计算机设备及存储介质 | |
CN113535221A (zh) | 应用版本管理的方法和装置 | |
CN111400243A (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 |