[发明专利]软件构建优化在审
申请号: | 201480015696.3 | 申请日: | 2014-03-14 |
公开(公告)号: | CN105229601A | 公开(公告)日: | 2016-01-06 |
发明(设计)人: | M·E·朱伯兰;A·格沙夫特;V·彼得连科;I·阿夫拉莫维克 | 申请(专利权)人: | 微软技术许可有限责任公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 杨丽 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 构建 优化 | ||
背景
计算机通过处理从软件源代码导出的指令集来实现任务。源代码通常由软件开发者使用一种或多种编程语言来编写。大部分编程语言具有源代码编译器以将源代码编译成计算机可读的二进制数据文件或二进制文件。
软件构建是为软件应用创建二进制文件的过程。在软件开发期间周期性地完成构建以提供二进制文件来支持软件开发团队的进一步工作。软件构建涉及执行除编译器之外的许多构建工具以处理软件应用的源代码文件和其他输入数据。构建工具的执行通常是时间密集的,因为一些软件开发项目可涉及具有复杂依赖性结构的数千甚至数十万的源代码文件。
概述
各方法、系统和计算机程序产品涉及优化软件构建。将表示构建进程的输入的数据与表示构建进程的先前执行的输入的数据作比较。当数据匹配发生时,由先前执行生成的输出数据被用于优化软件构建。
根据本公开的一个方面,收集表示由在构建进程的第一执行期间实现的数据访问操作所获得的输入的数据。该输入经由嵌入在构建进程中的重定向例程来捕捉,该重定向例程用于在构建进程的文件和非文件访问操作的援引之际执行。将所收集的数据与表示结合构建构成的第二执行所获得的输入的数据作比较以确定由第一执行生成的输出数据是否可用于构建优化。
提供概述以便以简化形式介绍将在以下详细描述中进一步描述的一些概念的选集。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简要说明
为更完全地理解本公开,参考以下详细描述和附图,在附图中,相同的参考标号可被用来标识附图中相同的元素。
图1是根据一个实施例的被配置成用于软件构建的优化的示例性系统的框图。
图2是根据一个实施例的用于软件构建的优化的示例性计算机实现的方法的流程图。
图3是根据用于所公开的方法和系统或其一个或多个组件或方面的实现的一个实施例的计算环境的框图。
尽管所公开的系统和方法易于具有各种形式的实施例,但在附图中示出了(并在下文描述了)各具体实施例,其中要理解,本公开旨在是说明性的,而不将本发明限于本文所描述和示出的各具体实施例。
详细描述
描述了用于软件构建(诸如源代码构建)的优化的方法、系统和计算机程序产品。优化通过使用由源代码构建的构建进程的先前执行生成的输出数据来达成。如果对构建进程的输入与先前执行没有改变,则对先前输出数据的这一使用可能是恰适的。仅涉及构建进程的一部分的增量式构建可因而被实现以优化源代码构建。此类优化可导致更高效的构建,其中构建的输出或结果更快地变为可用。通过依赖于先前构建结果以避免对构建进程的不必要的执行来提供优化的类型可以被称为构建“记忆化”或构建进程的“裁剪”。
构建可以作为取输入集并且产生输出集的事件图或进程序列来被跟踪。使用表示在构建的每一级、阶段或事件处的输入的数据,可以作出是要执行该进程还是替代地使用先前高速缓存的、存档的、或以其他方式存储的输出结果的决策。伴随每一新的构建,如果对构建进程的输入与该构建进程的先前执行是相同的,则存档的数据被复制或者被使用来替代运行(或继续执行)该构建进程。使用此类存档的数据可导致构建速度上升至多约60%。
所公开的各实施例收集表示输入的数据,并且实现与表示构建进程的先前执行的输入的数据的比较。输入经由嵌入在构建进程中的重定向例程来捕捉。重定向例程在构建进程的执行期间实现的每一数据访问操作的援引之际被执行。重定向例程可以使得所公开的各实施例能够实现被配置成记录由在构建进程执行期间实现的数据访问操作收集的输入的指令。在一些实施例中,将构建进程的援引与构建进程的身份(例如,构建进程以及到其的所有输入的标识符)作比较。如果构建进程不匹配构建进程的任何先前执行的身份,则该构建进程被执行,身份被记录,并且任何输出被存储。
重定向例程可以被自动插入到由根构建进程或顶部构建进程所援引的子进程中。可因而针对要么直接被援引要么作为构建的一部分被间接调用的每一构建进程来收集指示输入的数据。所公开的实施例的重定向例程和其他方面可允许结合先前存在的构建系统来达成优化。所公开的实施例不限于特定类型的构建系统。所公开的实施例的优化器和/或其他组件可以与各种不同的构建系统集成。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软技术许可有限责任公司,未经微软技术许可有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201480015696.3/2.html,转载请声明来源钻瓜专利网。