用于改进程序性能的字段专业化系统和方法技术方案

技术编号:17573040 阅读:24 留言:0更新日期:2018-03-28 20:35
提供了用于提高计算机程序、例如数据库管理系统(DBMS)的性能的系统和方法。这种方法涉及基于程序表示(PR)来识别DBMS代码中的变量的不变间隔。基于PR和DBMS的生态系统规范,推导出DBMS中的程序交互和域断言。基于DBMS代码中的变量的不变间隔、PR、与DBMS相关联的一个或多个执行概要、推导的程序交互和推导的域断言,标识一个或多个候选片段。然后基于一个或多个候选片段生成Spiff。这样的spiff包括谓词查询spiff、Hash‑join查询spiff、聚合spiff、页面spiff和字符串匹配spiff。基于由这些spiff生成的专业化代码修改DBMS代码。

【技术实现步骤摘要】
【国外来华专利技术】用于改进程序性能的字段专业化系统和方法
本专利技术通常涉及用于改进计算机程序性能的字段专业化,更具体地涉及通过利用至少部分地基于所识别的不变间隔生成的专用代码来识别变量的不变间隔并修改DBMS代码来改进数据库管理系统的性能的系统和方法。
技术介绍
数据库管理系统(DBMS)是管理数据的存储和访问的软件程序的集合。由于现在正在生成更大量的数据,因此数据必须进行存储并可高效地访问,所以在各种应用领域都采用了DBMS。在过去四十年中,由这种无处不在的部署所驱动的,已经基于通常适用于这些领域的一些数据模型对DBMS进行了设计和工程化。关系数据模型是商业和开源DBMS中最常用的模型之一。已经投入了大量的精力来有效地支持这一数据模型。由于关系数据模型的通用性,关系数据库管理系统本身是通用的,因为它们可以处理用户指定的任何模式以及向其呈现的任何查询或修改。关系运算符基本上对任何关系都起作用,并且必须处理根据潜在关系的任何属性指定的谓词。通过诸如有效的索引结构、创新的并发控制机制和复杂的查询优化策略等创新,今天可用的关系DBMS是非常有效的。这种通用性和效率使得他们在许多领域扩散和应用。然而,这种通用性是通过多层的间接性和复杂的代码逻辑实现的。通过利用在执行此类系统期间存在的不变值,可进一步提高DBMS的效率。本申请中公开的字段专业化技术的开发是为了自动识别不变量并基于不变量实现代码专业化。
技术实现思路
本专利技术的实施方式提供了用于改进数据库管理系统(DBMS)的性能的系统和方法。简而言之,该方法的一个实施方式特别地可以如下实施。用于改进DBMS性能的计算机实施方法包括以下步骤:(i)基于DBMS源代码的编译时间分析,识别DBMS代码中的变量的不变间隔;(ii)基于DBMS的源代码和生态系统规范,推导DBMS内的程序交互;基于源代码、DBMS代码中的变量的识别的不变间隔和推导的程序交互,推导所谓的域断言;(iii)基于DBMS代码中的变量的不变间隔、源代码以及使用各种工作负载执行的与DBMS相关联的一个或多个执行概要、推导的程序交互和推导的域断言,推导一个或多个候选片段;(iv)根据所识别的候选片段,在包括编译时间和运行时间的不同时间点产生专用DBMS代码;以及(v)通过插入可用于执行可能在运行时的专用代码生成并且随后调用专用代码的代码来修改DBMS。附图说明通过检查以下附图和详细描述,本专利技术的其它系统、方法、特征和优点对于本领域技术人员来说将是显而易见的或将变得显而易见。所有这些附加系统、方法、特征和优点旨在包括在本说明书内、包括在本专利技术的范围内,并且由所附权利要求保护。参考以下附图可更好地理解本专利技术的许多方面。附图中的组件不一定按比例绘制,而是将重点放在清楚地说明本专利技术的原理之上。此外,在附图中,相同的附图标记表示几个视图中的相应的部分。图1是示出了根据本专利技术提供的一个示例性实施方式的spiff工具架构的框图。图2是根据本专利技术提供的一个示例性实施方式的字段专业化过程的框图。图3是通过本专利技术提供的示例性实施方式来阐述计算机科学范式的字段专业化的说明。具体实施方式本专利技术的许多实施方式可采用计算机可执行指令的形式,包括由可编程计算机执行的算法。然而,本专利技术也可用其它计算机系统配置来实现。本专利技术的某些方面可体现在专用计算机或数据处理器中,该专用计算机或数据处理器被特别编程、配置或构造以执行以下描述的一种或多种计算机可执行算法。本专利技术还可在分布式计算环境中实现,其中任务或模块由通过通信网络链接的远程处理设备执行。此外,本专利技术可在基于因特网或云计算环境中实现,其中共享资源、软件和信息可根据需要提供给计算机和其它设备。在分布式计算环境中,程序模块或子程序可位于本地和远程记忆存储设备中。下面描述的专利技术的各方面可存储或分布在计算机可读介质上,包括磁性和光学可读和可移动的计算机磁盘、固定磁盘、软盘驱动器、光盘驱动器、磁光盘驱动器、磁带、硬盘驱动器(HDD)、固态驱动器(SSD)、紧凑型闪存或非易失性存储器,以及通过包括云在内的网络进行电子分布。数据结构和特定于本专利技术方面的数据传输也包括在本专利技术的范围内。虽然本专利技术可在此主要针对关系DBMS进行描述,但是本专利技术不限于这种DBMS类型。将容易理解的,本专利技术可应用于任何DBMS类型,包括但不限于分级的、网络和面向对象的DBMS类型。此外,虽然本文主要针对DBMS公开了字段专业化,但是应当理解,本文提供的概念可应用于操纵数据并特别对该数据进行复杂分析的任何程序。具体地说,应当理解,所公开的系统和方法也可应用于需要高运行时性能并且以不同的参数或查询在相同的数据上多次执行应用的计算机程序。代表字段专家的“spiff”是在DBMS运行时动态创建专用代码的代码。“字段专业化”是将spiff插入DBMS代码的过程,从而DBMS可通过利用运行时不变量来自身专业化。专用的代码(其在本文中可称为“专业化代码”)比原始未专业化代码更快并且通常更小。字段专业化的名称来自于在“该字段”中生成和调用专业化代码的事实,即在DBMS已部署并在最终用户的站点上运行之后。Spiff使用在运行时获得的运行时不变量的实际值来动态地产生专门针对运行时不变量的特定值的代码。在本申请要求优先权的申请人共同未决的美国专利申请序列号14/368,265中,术语“微专业化”等同于本文所用的术语“字段专业化”;术语“蜜蜂”等同于本文所使用的术语“spiff”;实例化的蜜蜂等效于本文使用的“专用的代码”,这是spiff的结果;并且HRE(蜂巢运行时环境)等效于本文所使用的“SRE”(spiff运行时环境)。架构图1是示出了根据由本专利技术提供的一个示例性实施方式的spiff工具架构的框图。在一个实施方式中,本专利技术提供了一种spiff工具架构,给定三个输入,其自动地对任意程序进行字段专业化,如图1所示:·应用程序的源代码,明显的输入,·一个或多个工作负载,和·生态系统规范。因此,这种架构假设字段专业化将分析应用程序源代码,并最终是一个完全自动的过程,其利用这三个输入来生成具有相同语义但运行更快的专用应用程序。目标此架构的目标包括以下内容。1.提供端对端的解决方案,其获得一个程序或一系列相关程序的源文件,并自动提供这些源文件的字段专业化版本,包括用于spiff生成、spiff编译、spiff实例化、spiff调用以及spiff无用单元收集的代码。2.提供域独立性,因为该架构几乎可以与编译到包括高度并行的图形处理单元(GPU)的任何常规架构的任何程序一起工作。3.使工具用户需要提供的信息最小化,并使从所分析的程序中提取的信息最大化。4.将分析分成一系列工具,每个工具只执行一个概念任务。5.通过确保每个工具产生捕获该工具分析的结果的小输出,从而实现工具的可扩展性。6.启用增量开发,以便工具最初可在小程序上进行测试,然后再对实际程序上进行测试。7.启用连续细化,因为每个工具最初只能进行部分的、尽力而为的分析(例如,只找到一些不变量或最小候选片段),然后进行细化,以随着时间的推移产生更为全面的输出。8.启用性能收益评估,因为可动态和/或独立地评估由spiff引入的每个单独代码转换的收益;可通过考虑到影响的代码转换和特定工作负载的特性来计算该spiff的本文档来自技高网...
用于改进程序性能的字段专业化系统和方法

【技术保护点】
一种用于改善计算机程序代码的性能的计算机实现方法,包括:基于程序表示(PR),即抽象语法树或计算机程序代码的其它实施方式,识别计算机程序代码中的变量的不变间隔;根据PR和计算机程序的生态系统规范推导出计算机程序内的程序交互;基于PR、用于计算机程序代码中的变量的识别的不变间隔以及推导的程序交互来推导域断言;基于计算机程序代码中的变量的不变间隔、PR、与计算机程序相关联的一个或多个执行概要、推导出的程序交互和推导出的域断言来识别一个或多个候选片段;基于一个或多个候选片段生成专用的计算机程序代码;以及基于生成的专用计算机程序代码修改计算机程序代码;以及隐藏专用的计算机程序代码。

【技术特征摘要】
【国外来华专利技术】2015.04.02 US 62/142,325;2015.12.14 US 14/968,8271.一种用于改善计算机程序代码的性能的计算机实现方法,包括:基于程序表示(PR),即抽象语法树或计算机程序代码的其它实施方式,识别计算机程序代码中的变量的不变间隔;根据PR和计算机程序的生态系统规范推导出计算机程序内的程序交互;基于PR、用于计算机程序代码中的变量的识别的不变间隔以及推导的程序交互来推导域断言;基于计算机程序代码中的变量的不变间隔、PR、与计算机程序相关联的一个或多个执行概要、推导出的程序交互和推导出的域断言来识别一个或多个候选片段;基于一个或多个候选片段生成专用的计算机程序代码;以及基于生成的专用计算机程序代码修改计算机程序代码;以及隐藏专用的计算机程序代码。2.根据权利要求1所述的计算机实现方法,其特征在于以下特征中的一个或两个:(a)其中所识别的不变间隔跨越多个执行;以及(b)其中所识别的不变间隔包括用于特定变量的不变间隔的至少一个集合,其中所述集合中的所有不变间隔共享相同的起始节点。3.根据权利要求1或2所述的计算机实现方法,其中所述一个或多个候选片段中的每一个包括(a)由所述PR识别的代码间隔,或(b)一组不变量和一组每个变量的可能值。4.根据权利要求1-3中任一项所述的计算机实现方法,其中所述一个或多个候选片段中的每一个包括所述候选片段的适当使用期限,并且其中所述一个或多个候选片段中的每一个优选地包括在候选片段的适当使用期限内采用的建议优化。5.根据权利要求1-4中任一项所述的计算机实现方法,其中生成专用计算机程序代码包括(a)在所述计算机程序内的适当位置插入代码以创建所述专用计算机程序代码,从而调用所述专用计算机程序代码并破坏专用计算机程序代码,或者(b)创建用于将任意字符串与给定字符串模式相匹配的专用函数,或者包括使用元指定器遍历解释数据结构和使用热插拔来转换现有的专用计算机程序代码,或涉及查询,或包括消除计算机程序代码中的分支,从而减小计算机程序代码的大小,或者包括利用数值来平均分配字段指定器(Spiff)数据段,其中然后通过在计算机程序代码内的所有输入行计算相应的聚合函数来重新使用Spiff数据段,以消除每行的存储器分配,其中数值由每行可支持的数字最大位数定义,或者包括利用存储计算机程序的磁盘或存储器页面内的不变量来重新组织页面读取后的数据布局,并优化数据局部性。6.根据权利要求1-5中任一项所述的计算机实现方法,其中所述专用计算机程序代码在运行时创建并在稍后调用,并且可选地还包括确定在给定的执行中是否出现所识别的不变间隔的任何违规。7.一种配置为改善计算机程序的性能的系统,包括:不变量探测器,基于计算机程序的程序表示(PR),确定计算机程序中的变量的不变间隔;交互推导器,基于PR和计算机程序的生态系统规范...

【专利技术属性】
技术研发人员:理查德·T·斯诺德格拉斯索木亚·K·德布雷张瑞斯蒂芬·托马斯肖恩·梅森
申请(专利权)人:数据仓库投资有限公司代表亚利桑那大学的亚利桑那董事会
类型:发明
国别省市:美国,US

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

1