当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于经由编程者注释执行异构数据结构选择的方法、系统和制品技术方案

技术编号:29201193 阅读:20 留言:0更新日期:2021-07-10 00:35
公开了经由编程者注释执行异构数据结构选择的方法、设备、系统和制品。示例设备包括:阶段跟踪器,用于标识第一阶段和第二阶段;成本预测器,用于估计与第一阶段和第二阶段内的各个类型的数据结构交互的交互成本;树构造器,用于构造与第一数据结构类型相对应的树,该树包括第一阶段的第一节点、第二阶段的第二节点和连接第一节点和第二节点的边,第二节点表示不同于第一数据结构类型的第二数据结构类型;转换成本计算器,用于计算边的转换成本;以及分支选择器,用于基于组合的交互成本和转换成本来选择数据结构的序列。换成本来选择数据结构的序列。换成本来选择数据结构的序列。

【技术实现步骤摘要】
用于经由编程者注释执行异构数据结构选择的方法、系统和制品


[0001]本公开总体上涉及代码开发,并且更具体地涉及用于经由编程者注释执行异构数据结构选择的方法、系统和制品。

技术介绍

[0002]数据结构(DS)是一种可用于逻辑地表示数据的存储的软件构造。可以在数据结构上执行不同的操作,例如,插入数据、删除数据、访问数据、移动数据等。编程者在通用编程(诸如C/C++)中使用数据结构。数据结构的类型很多,包括例如,数组、向量、链表、二叉树和哈希图。数据结构充当软件系统的基本构建块,并且通常影响软件程序的整体效率。
附图说明
[0003]图1是根据本公开的教导构造以选择数据结构的示例数据结构选择系统的示意性图示。
[0004]图2是图1的示例数据结构选择器的示意性图示。
[0005]图3是表示可以被执行以实现图1的示例系统和/或图1和/或图2的示例数据结构选择器的示例机器可读指令用于选择数据结构的流程图。
[0006]图4是可由图1和/或图2的示例数据结构选择器识别的示例注释的图示。
[0007]图5是表示可以被执行以实现图1的示例系统和/或图1和/或图2的示例数据结构选择器的示例机器可读指令用于学习注释语义的流程图。
[0008]图6是表示可以被执行以实现图1的示例系统和/或图1和/或图2的示例数据结构选择器的示例机器可读指令用于选择数据结构的流程图。
[0009]图7是表示在程序执行的整个阶段中不同类型的数据结构之间的变化的示例树结构的图。
[0010]图8是被构造用于执行图3、图4和/或图6中的指令以实现图1的示例数据结构选择系统和/或图1和/或图2的示例数据结构选择器的示例处理平台的框图。
[0011]这些图并未按比例绘制。一般来说,贯穿(多个)附图和所附书面说明书,相同的附图标记将用于表示相同或相似的部分。
[0012]当标识可被分别引用的多个要素或组件时,本文使用描述符“第一”、“第二”、“第三”等。除非基于它们的使用上下文另有规定或理解,否则此类描述符并非旨在赋予优先级、物理次序或列表中的布置、或者时间顺序的任何含义,而仅仅是为了便于理解所公开的示例而用作分别指代多个要素或组件的标签。在一些示例中,描述符“第一”可以用于指代详细描述中的要素,而在权利要求中可以使用诸如“第二”或“第三”之类的不同描述符来指代相同的要素。在此类情况下,应当理解,此类描述符仅用于易于引用多个要素或组件。
具体实施方式
[0013]数据结构充当软件系统的基本构建块,并且通常影响软件程序的整体效率。由于存在许多不同类型的数据结构,因此许多编程者(包括专家级编程者)选择对于特定软件问题最有效的数据结构的选择标准容易出错。例如,编程者用于选择特定数据结构的传统计算复杂度分析技术可提供对数据结构性能的粗略近似。而且,此类复杂度分析(即,大O符号(Big O()notation))不考虑计算机微体系结构的效率影响。进一步地,许多编程者可能不是数据结构计算分析方面的专家,并且因此使用可以合理地处理大多数问题、但对几乎所有问题都不是最优的广义数据结构。
[0014]在一些示例中,编程者可能错误地选择了他们最熟悉和/或最轻松的数据结构的类型,从而导致(多个)软件程序虽然功能健全,但在计算上却没有尽可能地高效。
[0015]此外,通常基于编程者认为是程序中计算上开销最高的组件来执行数据结构选择,从而将选择限制为每个问题单个数据结构(DS)。然而,在许多情况下,多个异构数据结构的融合可提供比单个数据结构(DS)整体上更有效的解决方案。但是,由于编程和维护此类解决方案的辛苦工作,通常不执行此类解决方案。
[0016]利用和/或以其他方式选择特定的数据结构影响在平台上执行的应用的性能指标。性能指标包括但不限于:数据结构消耗的存储器量、或者数据结构能够传输(例如,读取、写入)和/或修改数据的速度、特定(多个)存储器操作消耗的计算机处理单元(CPU)周期的数量等。例如,在应用在具有有限存储空间的移动设备平台上运行的情况下,与应用消耗的存储器量相关联的性能指标变得重要。另一方面,在应用实时处理相对大量数据的情况下,与数据传输速度相关联的性能指标变得重要。在另外的其他示例中,有序列表数据结构类型使数据集检索能够以相对较快的方式发生,但是该数据结构类型表现出实质上较慢的元素存储能力。
[0017]特定数据结构通常由代码开发人员在应用的代码开发过程期间选择。因此,代码开发人员需要具有相对大量的不同数据结构类型的详细知识、不同数据结构类型的语法实现的详细知识以及有关哪些数据结构类型最能改善感兴趣的性能指标的详细知识。此外,在应用在其整个操作过程中使用特定类型的数据和/或不同数据类型的情况下,此类不断发展的输入和/或不断发展的异构系统对于代码开发人员来说太多了以致于无法有效考虑。例如,有序列表数据类型(例如,数据结构)允许相对快地检索数据集,但是同一数据结构类型展现出相对慢的插入新元素的能力。在另一个示例中,哈希表数据类型有助于相对快地插入和/或检索特定数据集项,但是与以特定顺序(例如,数字顺序、字母顺序等)列出整个数据集有关的任务发生得相对慢。更进一步地,在第一时间选择第一数据结构类型的情况下,观察到与第一类型的输入数据有关的第一数据结构类型表现出相对良好的性能特性,在使用经编码的应用的整个过程中输入数据类型和/或输入数据量改变的情况下,性能特性可能发生不利变化(例如,降级)。因为数据结构的选择是一个费力的过程,需要大量的专业知识、众多的设计因素和/或可能的动态操作条件,所以当选择特定的数据结构时,由代码开发人员编写和/或以其他方式开发的应用将遭受一个或多个性能指标的困扰。换句话说,依靠代码开发人员的判断力可能导致应用性能不合格。
[0018]数据结构的适当选择允许改进应用的一个或多个性能指标。本文所公开的示例使得能够在代码开发期间以避免代码开发人员随意选择并考虑对一个或多个性能指标的影
响的方式来选择数据结构类型和/或其组合。另外,本文公开的示例使得能够利用应用的数据结构来实现此类组合数据结构类型选择,而无需先验数据类型。换句话说,因为在程序执行的不同阶段期间,第一不同数据结构类型可能比第二数据结构类型更有效,所以如本文所公开的,可以推荐数据结构序列而不是单个数据结构。此类推荐还考虑了从一个数据结构类型转换到另一个数据结构类型的成本。本文所公开的示例结合异构系统和不断发展的应用使用情况评估了数据结构类型的许多不同组合,同时消除了代码开发人员的自由裁量的错误(例如,要使用的(多个)最佳数据结构类型的代码开发人员假设),使得可以防止对数据结构类型的经验不足和/或错误的选择。
[0019]图1是示例数据结构选择系统100的示意性图示。在图1的所图示的示例中,数据结构选择系统100包括通信地连接到示例网络106的示例服务器102。示例服务器102包括用于促进代码数据结构(例如,数据结构类型)的选择的示例数据结构选择器108,如下文进一步详细所述。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于选择数据结构的序列的设备,所述设备包括:阶段跟踪器,用于标识目标程序的执行的阶段,所述阶段包括第一阶段和第二阶段;成本预测器,用于估计与所述第一阶段和所述第二阶段内的各个类型的数据结构交互的交互成本;树构造器,用于构造与第一数据结构类型相对应的树,所述树包括所述第一阶段的第一节点、所述第二阶段的第二节点和连接所述第一节点和所述第二节点的边,所述第二节点表示不同于所述第一数据结构类型的第二数据结构类型;转换成本计算器,用于计算所述边的转换成本;以及分支选择器,用于基于组合的交互成本和转换成本来选择包括所述第一数据结构类型和所述第二数据结构类型的数据结构的序列。2.如权利要求1所述的设备,进一步包括用于检查与所述目标程序相对应的经注释的指令的注释标识符,对所述经注释的指令进行检查使所述阶段跟踪器能够标识所述第一阶段和所述第二阶段。3.如权利要求2所述的设备,其中所述经注释的指令表示源代码。4.如权利要求1-3中任一项所述的设备,进一步包括用于使用占位符数据结构执行所述目标程序的指令执行器。5.如权利要求1所述的设备,进一步包括用于提供数据结构的序列的推荐的数据结构推荐器。6.如权利要求1所述的设备,其中数据结构的序列是异构数据结构的序列。7.至少一种机器可读介质,包括指令,所述指令在被执行时使至少一个处理器至少用于:标识目标程序的执行阶段,所述阶段包括第一阶段和第二阶段;估计与所述第一阶段和所述第二阶段内的各个类型的数据结构进行交互的交互成本;构造与第一数据结构类型相对应的树,所述树包括所述第一阶段的第一节点、所述第二阶段的第二节点和连接所述第一节点和所述第二节点的边,所述第二节点代表与所述第一数据结构类型不同的第二数据结构类型;计算所述边的转换成本;以及基于组合的交互成本和转换成本来选择包括所述第一数据结构类型和所述第二数据结构类型的数据结构的序列。8.如权利要求7所述的至少一种机器可读介质,其中,所述指令在被执行时使所述至少一个处理器用于检查与所述目标程序相对应的经注释的指令,以标识开始注释和结束注释。9.如权利要求8所述的至少一种机器可读介质,其中,所述经注释的指令表示源代码。10.如权利要求7-9中任一项所述的至少一种机器可读介质,其中,所述指令在被执行时使所述至少一个处理器用于使用占位符数据结构来执行所述目标程序。11.如权利要求7所述的至少一种机器可读介质,其中,所述指令在被执行时使所述至少一个处理器用于提供数据结构的序列的推荐。12.如权利要求7所述的至少一种机器可读介质,其中,...

【专利技术属性】
技术研发人员:J
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

1