用于优化应用程序的并行构建的方法和系统技术方案

技术编号:9839491 阅读:160 留言:0更新日期:2014-04-02 02:52
公开了一种优化应用程序的并行构建的方法和系统以及使用其的编译系统和计算机系统。所述方法包括:在命令的并行执行中,记录命令顺序号及命令的访问信息;基于命令顺序号及命令的访问信息检测执行冲突;以及对执行冲突所涉及的命令进行重新执行。根据本发明专利技术的构建工具具有通用性、检测的成功率很高、便利性高且对于用户是完全透明的。

【技术实现步骤摘要】
【专利摘要】公开了一种优化应用程序的并行构建的方法和系统以及使用其的编译系统和计算机系统。所述方法包括:在命令的并行执行中,记录命令顺序号及命令的访问信息;基于命令顺序号及命令的访问信息检测执行冲突;以及对执行冲突所涉及的命令进行重新执行。根据本专利技术的构建工具具有通用性、检测的成功率很高、便利性高且对于用户是完全透明的。【专利说明】用于优化应用程序的并行构建的方法和系统
本专利技术涉及计算机应用程序的编译,更具体地,涉及一种优化应用程序的并行构建的方法、系统以及使用该系统的编译系统和计算机系统。
技术介绍
在当今世界,应用程序无处不在。小到计算机中的计算器程序,大到股票交易系统都是应用程序的一种。而在计算机程序的日常开发中,构建(build)扮演了重要角色。构建是指调用编译器去分析源代码,生成目标代码并生成二进制代码的整个过程。当构建大型应用程序(例如日常驱动程序)时,开发人员不得不等待一些时间。该等待时间有可能是数小时,也可能是数天。当今,开发人员一般使用并行构建来缩短构建时。例如,gmake是Linux下的一款程序编译工具,配合makefile的使用,以对程序进行编译。Makefile是共享文件系统中的构建文件,它是应用程序的底层文件,在应用程序编写后伴随应用程序而存在。应用程序中各命令执行的顺序存储在makefile中。以gmake_4为例,gmake_4可以同时取4条指令并行执行。例如,gmake按照makefile中指令的执行顺序先取出4条命令并并行执行。当某一路的命令执行完毕后,再取出下一条命令在该路上执行,从而提高构建的效率。但是,有时并行构建会出现一些问题。例如,在串行构建模式下应用程序的构建没有问题,而在并行构建时却不能成功完成构建。这种问题出现的原因例如是一些命令读/写同一个文件,但这种读/写关系是隐性的。因此gmake按照makefile中的命令顺序取出命令时很难发现,导致例如执行依赖前一命令对某文件的读/写的后一命令与前一命令并行执行,甚至在前一命令之前执行。当这种问题出现时,很难跟踪错误。开发人员往往要花很长时间来进行调查并消除问题。为了对并行构建发生错误进行跟踪调试错误源,现有技术中已经针对不同厂商的并行构建工具开发出错误跟踪调试工具,但是这些工具不具有通用性,其中一些不能完全消除由于命令执行乱序弓I起的错误。
技术实现思路
本专利技术解决的一个问题是减少在命令的并行构建中由于具有对同一文件的读/写关系的命令执行乱序弓I起的错误。根据本专利技术的一个方面,提供了一种优化应用程序的并行构建的方法,包括:在命令的并行执行中,记录命令顺序号及命令的访问信息;基于命令顺序号及命令的访问信息检测执行冲突;以及对执行冲突所涉及的命令进行重新执行。根据本专利技术的另一个方面,提供了一种优化应用程序的并行构建的系统,包括:记录装置,被配置成在命令的并行执行中,记录命令顺序号及命令的访问信息;检测装置,被配置成基于命令顺序号及命令的访问信息检测执行冲突;以及重新执行装置,被配置成对执行冲突所涉及的命令进行重新执行。根据本专利技术的另一个方面,提供了一种编译系统,包括:编译器,被配置成编译应用程序;以及优化装置,被配置成使用上述系统来对所述编译器的编译进行优化。根据本专利技术的另一个方面,还提供了一种计算机系统,包括:共享文件系统,被配置成并行构建应用程序;以及上述编译系统。本专利技术的一个有益效果是,本专利技术的并行构建的优化方案可以适用于各个厂商的构建工具,具有通用性。本专利技术的另一个有益效果是,由于根据文件系统在执行命令时获得的信息来检测命令执行冲突,因此检测的成功率很高。本专利技术的再一个有益效果是,由于不再需要开发人员的对进行额外的跟踪调试,所以维护成本低而便利性高。本专利技术的这种检测对于用户是完全透明的。【专利附图】【附图说明】通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框图。图2示出了现有技术的并行构建中存在的问题。图3示出了本专利技术的一个实施例的优化应用程序的并行构建的方法的流程图。图4示出了本专利技术的一个实施例的检测命令执行冲突的过程的流程图。图5示出了本专利技术的一个实施例的优化应用程序的并行构建的时序图。图6示出了本专利技术的一个实施例的优化应用程序的并行构建的系统框图。图7示出了使用了本专利技术的编译系统的框图。图8示出了使用了本专利技术的计算机系统的框图。【具体实施方式】下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。所属
的技术人员知道,本专利技术可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本专利技术还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言或其组合来编写用于执行本专利技术操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器本文档来自技高网
...

【技术保护点】
一种优化应用程序的并行构建的方法,包括:在命令的并行执行中,记录命令顺序号及命令的访问信息;基于命令顺序号及命令的访问信息检测执行冲突;以及对执行冲突所涉及的命令进行重新执行。

【技术特征摘要】

【专利技术属性】
技术研发人员:纪金松蒋健张嗣元朱鸿伟
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1