在比较语句序列中采用判别比较的方法和设备的制作方法

文档序号:6528281阅读:181来源:国知局
专利名称:在比较语句序列中采用判别比较的方法和设备的制作方法
技术领域
本发明一般来说涉及在计算机系统中的处理数据。更具体来说,本发明涉及在比较序列中代码执行的最佳化。还是更具体来说,本发明涉及减小所执行指令的数目的一种方法,以便在代码序列所构成的比较语句中获得一个成功的比较。
过去,代码最佳化通常由编译程序构成,其在第一遍传送中检验已被生成的代码,同时通过消除在执行期间不起作用的代码来改善所生成的汇编程序代码,消除冗余的寄存器装入指令,合并类似的代码序列,并通常在第一遍传送中细调所生成的代码。所有这个代码最佳化发生不取决于当它被运送至顾客时用代码组成的用途。富有经验的本专业技术人员承认,应用程序开发的进程经历被认可的阶段,通常包括代码开发、代码试验、代码俘获和产品运送至顾客。在一个应用程序交付使用之后,只可能进行极小的进一步最佳化,因为编译程序最佳化选项是在代码开发阶段被决定的。(一个普通专业技术人员也承认,不管是一个认可的工业制造商使用还是实质上正在为自己购买该产品的顾客自用,应用程序开发的阶段是相同的)。在代码售出之后,不管代码的用户之间的差别,进一步最佳化受到很大限制。
例如,考虑一个应用程序的下列用户,该应用程序售给同一保险应用程序(Insurance Application)的两个不同顾客。

图1示出当用于数据输入到该应用程序时的一个典型应用程序菜单的一个屏幕摄影(screen shot)。应用程序的屏蔽一(screen one)由一个标准菜单组成,该菜单代表要求选择或输入保险类型的用户,在这个情况中是索赔(claim)。在图1中为顾客呈现的选择是Auto(自动)、Home(房屋)、Life(人寿)、property(财产)和Travel(旅游)。顾客A,“Acme Travel”,输入“Travel”。驱动应用程序的多数现代菜单应保存“Travel”,并提供按“Travel”注入的一种击键最佳化形式,供顾客A下次显示屏幕一用。同样地,顾客B,“Precious Protectionfor Your Jewely,”输入“Property”,因此下一次注入“Property”顾客B使屏幕一显示。
图2A示出编译程序级语句,如COBOL,其加工代码以处理图1中屏幕一的输入字段。虽然两个顾客可能在下次使用屏幕一菜单时都满足于所保存的击键,但是在图2A中的由COBOL,C或任何其它编译程序生成的汇编程序代码在保险索赔类型的识别下生成的汇编代码的检验呈现明显的无效。
图2B示出汇编编程代码,其通过加工图2A中的编译程序级语句创建而成。
这个保险应用程序的屏幕一的创建者不懂得购买者使用保险作业的什么类型。同样,购买者不懂得创建者以编译程序级语言编码该比较的次序。由于版权和责任问题,应用程序购买者很少访问应用程序的源代码,并且编译程序没有机会最佳化或改编所生成的汇编程序代码,以便以最适合每个个别的顾客的次序执行比较。
因此,事实上顾客A已购的代码,在获得在“Travel”上的一个TRUE(真)状态之前,总是执行四个不需要的比较;而顾客B已购的代码,在获得在“Property”上的一个TRUE(真)状态之前,总是执行三个不需要的比较。不错,有些顾客“运气好”,他们的处理次序碰巧与代码创建者规定的次序相符。
这个在一个屏幕菜单上五个可能的合法值(LEGAL VALUES)的简化例子类似于遍及整个软件的比较代码序列。一个相当可靠的假设是,一个IF语句将以50%时间生成两个字符串的一个比较,同时多数复合IF语句或IF THEN FLSE语句将生成一个比较的列表。因为IF语句是软件逻辑的基础,因此这些比较决不限于支持屏幕菜单输入的代码。实际上,菜单仅代表冰山的顶部。多数商业应用程序访问顾客列表、帐户、零件号、帐单历史和所有商业世界的附件。
一个普通专业技术人员承认,比较不可避免,因为一个被更改的输入字段,包括在错误中的一个字段的可能性必须对每一次交易进行试验。因此,存在一种需要,以便通过根据实际顾客的用途调整代码序列来使各个用户和顾客的汇编程序代码最佳化。
通常,有一个使由几乎每一个被工业所使用的编译程序所生成的代码最佳化的需求。例如,在C语言或者COBOL语言中某些编译程序允许用户规定一个用户所希望的代码最佳化级。几乎所有编译程序提供者都承认允许顾客使编译程序在最佳执行速度和最小存储器使用方面最佳化的需求。虽然大规模的应用程序和某些系统程序提供一个参数列表,它通常可以影响存储器和执行特性,这些参数通常具有全局特性,它在各个代码序列级不起作用。
所需要的是以这样的方式调整各个代码序列的一个方法,以便通过减小不必要的比较所需的指令来最佳化它们的执行。
本发明公开通过减小所执行的指令数目来最佳化代码执行以获得一个成功的比较的一种方法和设备。一个比较序列至少被执行一次,那个执行的结果被用于调整该比较序列供该比较序列的下一次执行。在一个优选实施例中,在比较序列开始的时候,比较序列通过放置由以前执行确定的TRUE比较语句来调整。在另一个优选实施例中,比较序列按以与每个比较语句有关的TRUE比较的号码的降序方式重排次序。比较序列可以在每次成功比较后立即被调整,或者用户可以规定比较序列调整的外部取样周期。调整可以是延迟调整的比较结构的一个单一程序调整,或者是延迟调整的程序的一个全局调整。
本发明的特征所证明的新颖特性将在附加的权利要求中陈述。然而,本发明本身以及一个优选的使用方式,进一步的目标和其优点,在与下列附图一起阅读时通过参照下列的一个示例性实施例的详细描述将会更好理解,其中图1示出用于数据输入到应用程序的一个典型应用程序菜单的一个屏幕图象;图2A示出编译程序级语句,如COBOL,它加工代码以处理在图1中屏幕一的输入字段;图2B示出通过处理在图2A中的编译程序级语句所创建的一个汇编程序语言代码。
图3是一个可以实现本发明的分布式数据处理系统的图示表示;图4是按照本发明一个可以被实现作为一个服务器,例如在图3中的服务器304的数据处理系统的方块图;图5示出可以实现本发明的一个数据处理系统的方块图;图6示出描述将一个单一字段与一个数值列表相比较的最直截了当的方法的一个汇编程序代码序列;图7描述如由本发明的一个优选实施例所揭示的调整一个比较序列的一个进程;
图8描述在一个表中的两个并行字段,其可能为比较结构的一个优选实现所创建;图9示出一个处理在图1中屏幕一的Input(输入)字段的汇编程序代码,其从编译程序级语言如COBOL中产生;图10示出为最佳化比较结构的一个优选实现所创建的两个字段;图11示出由编译程序以这样的方式创建的一个汇编程序代码序列,以致在所保留的NULL输入已被设置一次之后,一个假比较使得一个完全的反转到第一个比较状态;图12示出一个汇编语言代码序列,其执行与图11中的代码序列相同的功能;图13A示出三个字段,来自图10两个并行字段,加上一个记录用途模型的新的并行字段;图13B示出三个字段,在表已按照本发明的一个优选实施例的降序重新安排次序之后;图14示出一个代码序列,其执行处理屏幕一所要求的比较,但不是调整代码或表,而只是记录每个合法值的TRUE比较出现的频率;图15示出根据是立即调整还是延迟调整以及根据应用程序的等同来调用图7所示的进程的一种方法;和图16示出一个包含比较语句序列信息的程序字头,其按照本发明加快判别(cognitive)比较进程。
现在参照图,具体地说参见图3,一个可以实现本发明的分布式数据处理系统被示出。
分布式数据处理系统300是可以实现本发明的一个计算机网络。分布式数据处理系统300包含网络302,它是用于提供各种设备和连接在分布式数据处理系统300中的计算机之间通信链路的媒体。网络302可以包括永久性连接,如导线或光纤电缆,或通过电话连接实现的临时性连接。
在所示的例子中,服务器304与存储器单元306一起被连接到网络302。此外,客户308、310和312也被连接到网络302。这些客户,308、310和312,可能是例如个人计算机或网络计算机。对这个应用程序来说,网络计算机是与网络连接的任何计算机,其从连接到网络的另一个计算机接收程序或其它应用程序。在所示的例子中,服务器304提供数据,如引导文件、操作系统图象和应用程序到客户308-312。客户308、310和312是服务器304的客户。分布式数据处理系统300可以包含附加的服务器、客户和未示出的其它设备。分布式数据处理系统300也包括打印机314、316和318。一个客户,例如客户310,可以直接打印到打印机314。客户,如客户308和客户312,没有直接连接的打印机。这些客户可以打印到连接到服务器304上的打印机316,或到打印机318,它是一台网络打印机,为了打印文档不要求连接到计算机。另一方面,客户310可以打印到打印机316或打印机318,取决于打印机类似和文档要求。
在所述的例子中,分布式数据处理系统300是因特网(Internet),具有代表一批世界范围的网络和网关的网络302,它们使用TCP/IP协议组互相通信。因特网的要点是在主要节点或主计算机之间高速数据通信线的一个基干,主计算机包括成千台商业、政府、教育和其它路由数据和消息的计算机系统。当然,分布式数据处理系统300也可以实现作为许多不同类型的网络,例如一个内联网(intranet)或一个局域网。
图3仅作为一个例子,而不是作为处理本发明的一个体系结构限制。
参见图4,一个可以实现作为一个服务器,如在图3中的服务器304的数据处理系统的方块图按照本发明被示出。数据处理系统400可以是一个对称多处理器(SMP-Symmetric multiprocessor)系统,包括连接到系统总线406的许多处理器402和404。另一方面,一个单一处理机系统可以被采用。存储器控制器/高速缓存408也被连接到系统总线406,提供一个至本地存储器409的接口。I/O总线桥路410被连接到系统总线406,并提供一个至I/O总线412的接口。存储器控制器/高速缓存408和I/O总线桥路410可以如所示的那样集成在一起。
外围元件互连(PCI)总线桥路414连接到I/O总线412,提供一个至PCI本地总线416的接口。许多调制解调器418-420可以被连接到PCI总线416。典型的PCI总线实现将支持四个PCI扩展槽或附加连接器。至图3中网络计算机308-312的通信链路可以通过经由附加板连接至PCI本地总线416的调制解调器418和网络适配器420提供。
附加PCI总线桥路422和424提供支持附加调制解调器或网络适配器的附加PCI总线426和428的接口。以这一方式,服务器400允许连接到多个网络计算机。一个存储器映象图形适配器430和硬盘432也可以如图所示连接到I/O总线412,无论是直接连接还是间接连接。
那些本专业技术人员理解,在图4中所示的硬件可以改变。例如,其它外围设备,如光驱动器等也可以被用于添加到替代所示的硬件。所示的例子不意味着对于本发明的体系结构限制。
在图4中所示的数据处理系统可以是,例如一台运行AIX(AdvancedInteractive Executive)操作系统的IBMRISC/System 6000,国际商业机器公司(Armonk,New York)的产品。
现在参见图5,一个可以实现本发明的数据处理系统的方块图被示出。数据处理系统500是客户计算机的一个例子。数据处理系统500采用外围元件互连(PCI)局部总线体系结构。虽然所示的例子采用PCI总线,但是其它总线体系结构,例如微通道(Micro Channel)和ISA可以被使用。处理器502和主存储器504经由PCI桥路508被连接到PCI局部总线506。PCI桥路508也可以包括处理器502的一个集成在一起的存储器控制器和高速缓冲存储器。至PCI局部总线506的附加连接可以通过直接元件互连或通过附加板实现。在所示的例子中,局域网(LAN)适配器510、SCSI主机总线适配器512和扩展总线接口514通过直接元件连接被连接至PCI局部总线506。相反,音频适配器516、图形适配器518和音频/视频(A/V)适配器519通过插入到扩展槽的附加板被连接至PCI局部总线506。扩展总线接口514提供键盘和鼠标适配器520、调制解调器522和附加存储器524的一个连接。在所示的例子中,SCSI主机总线适配器512提供硬盘驱动器526、磁带驱动器528、CD-ROM驱动器530和数字视碟只读存储器驱动器(DVD-ROM)532的一个连接。典型的PCI局部总线的实现将支持三或四个PCI扩展槽或附加连接器。
一个操作系统在处理器502上运行,并被用于协调和提供在图5中数据处理系统500内各种元件的控制。操作系统可以是市售操作系统,如OS/2,它从国际商业机器公司(IBM)获得。“OS/2”是国际商业机器公司的商标。面向对象的编程系统,例如Java,可以与操作系统一起运行,由此从在数据处理系统500上执行的Java程序或应用程序至操作系统提供调用。操作系统的指令,面向对象的操作系统和应用程序或程序被放置在一个存储设备,如硬盘驱动器526上,并可以被放置到主存储器504内供处理器502执行。
那些本专业技术人员理解,在图5中的硬件可以改变,取决于实现方式。例如,其它外围设备,例如光驱等可以被用于添加到或替代在图5中所示的硬件。所示的例子不意味着对于本发明的体系结构限制。例如,本发明的处理可以应用于多处理器数据处理系统。
本发明公开根据用途调整汇编程序代码的各种技术。一个比较序列至少被执行一次,那个执行的结果被用于调整比较序列的下一次执行的比较序列。在一个优选实施例中,在比较序列开始的时候,比较序列可以通过放置以前执行的TRUE比较语句来调整。在另一个优选实施例中,比较序列按与每个比较语句有关的TRUE比较的号码以降低重排次序。在另一个优选实施例中,用于驱动汇编程序代码序列的数据说明按与每个比较语句有关的TRUE比较的号码以降序重排次序。比较序列或数据说明可以在每次成功比较后立即被调整,或者顾客可以规定比较序列调整的外部取样周期。调整可以是延迟调整的比较结构的一个单一程序调整,或者是延迟调整的程序的一个全局调整。
最佳化技术提供一批选项,包括比较序列在每次成功比较后的立即调整;顾客规定继之以比较序列的调整的外部取样周期汇编程序代码序列的立即或延迟调整用于驱动汇编程序代码序列的数据说明的立即或延迟调整;延迟调整的比较结构的单一程序调整;和延迟调整的程序的全局调整。
所描述的技术是用户专用的,每个技术不适合每个用户。例如,在系统中,每个用户有驻留在计算机中的程序的一个拷贝,在计算机上该程序正在运行,立即调整工作正常。然而,在系统中,代码的一个单一拷贝存在,所有用户共享存储器,应用程序的一个单一拷贝,对单一拷贝进行的立即调整将造成用户相互的处理发生干扰。
立即调整仅能成功地使用于每个用户具有或创建程序的一个单独拷贝且该程序存在于每个单独的CPU上之场合。同样,延迟调整不能不加选择地应用于这样的系统,即仅有程序的一个拷贝存在且这个单一拷贝在所有用户没有调整情况下被装载的场合,除非多数用户在多数时间内执行几乎完全相同的任务。因为这些问题与代码的封装、分发和系统管理有关,它们超出本发明的范围。其次,用户必须了解将调整类型改编至一个特定系统环境的细节和可能性。
图6示出描述将一个单一字段与一个数值列表相比较的最直截了当的方法的一个汇编程序代码序列。在检验一个单一语句,例如“CLCINFIELD,’AUTO…”中,一个本专业技术人员认识到,比较将是在两个存储单元之间-一个由初始赋予符号名“INFIELD”的存储单元确定,而另一个由赋予文字值‘AUTO……’的存储单元确定。这些存储单元众所周知并可以由编译程序用符号来标记,并且由汇编程序解决到实际的、绝对或相对地址(对存储器中的装载点)。因为编译程序可以标记它创建的任何存储单元的位置,所以最简单(和最完善的)代码调整方法是可能的,如下所示1)编译程序创建一个NULL比较作为在一个列表中的第一个比较;2)编译程序创建每当一个成功比较出现时发生的额外移动。
这个移动取代NULL比较,因此下一个比较被进行到所比较的最近的以前值。显而易见,在相同字段被反复比较的比较序列中,TRUE比较将首先被发现。无可否认,在图6中示出的这个技术创建额外指令的一个多余的号码,但事实上它的确在工作。
在图6中所示的汇编程序代码序列由编译程序以这样的方式被创建,即在NULLFIELD已被设置一次之后,一个假比较导致完全回复到第一比较状态;即所有五个值被试验,同时一个TRUE比较使得NULLFIELD被设置到引起TRUE比较的值。然而,当NULLFIELD已被设置一次,同时一个TRUE比较在第一比较(在标号‘CONT’上)被发现时,一个分支立即进行到正确菜单装载语句。这将有益于所有五个保险用户类型;只要他们反复地输入‘INFIELD’的相同值,仅仅四个汇编程序语句指令将被执行以装载下一个菜单。
图7示出如由本发明的一个优选实施例所揭示的调整一个比较序列的进程。所示的进程可以在一个比较的调用上被立即执行或者被延迟以及作为调整在一个程序目录或库中的一组比较结构的子程序执行。通过获得至一个比较结构的寻址能力开始进程(步骤702)。一个比较结构的地址可以在程序字头被索引并直接从程序内比较结构地址的字头读取。然后,作出一个决定,是否用最后一个TRUE比较语句替换NULL语句(步骤704)。按照本发明的优选实施例,执行该比较结构可以从一个零字段比较开始。NULLFIELD比较对一个比较序列的立即调整是特别有帮助的,因为比较序列的下一个调用从最后一个TRUE比较语句开始。因此,给定数据入口的特性以及下一个字段入口将与当前字段入口相同的似然物,用NULL入口替换最后一个TRUE比较语句开始与序列中被TRUE的比较语句开始比较序列。如果决定用最后一个TRUE比较语句替换NULLFIELD,则可以假定比较序列的调整在最后一个比较周期之后被立即实现。通常,可以假定,在执行之后每次重新分类比较序列比通过重排比较序列次序来保存花更多的执行时间。因此,多半立即调整技术的动向是仅用最后一个TRUE比较替换NULL字段,而不分类比较序列。
然而,调整在比较的时间可能不执行的情况可能存在。因此,做一个关于调整是否是比较序列的立即调整的判定(步骤706)。如果调整是一个立即调整,则进程提前进到RETURN(返回),且不进一步调整比较序列。如果在不大可能的事件中,用最后一个TRUE比较语句替换NULL不是一个立即调整,则进程转向步骤708。
在比较结构中入口的精确数目在步骤708从结构字头查明。在一个比较结构中入口的数目是分类该比较所需要的。当在比较结构中入口的数目已经从结构字头读得时,取样周期必须被判定(步骤710)。
通常,取样周期不被考虑,因为整个结构由每个比较语句的USECOUNT字段中的入口来分类。然而,从最后一次分类的整个周期或是不必要的或是对当前分类无效的情况可能存在。因此,用户可以规定一个取样周期,以便更精确地反映新比较序列的次序。如果决定使用分类比较语句的一个取样周期,则取样周期参数被检索(步骤712)。仅使用与取样周期有关的USECOUNT,比较列表以降序被分类(步骤714)。
回到步骤710,如果没有取样周期被规定,则进程流向步骤714,在那里它必须判定是否清除USECOUNT字段。比较列表则由在比较列表中获得的USECOUNT被分类。比较列表以降序被分类。
如果分类根据取样周期来执行,则USECOUNT字段可能不被清除(步骤716)。另一方面,多半USECOUNT字段每次将被清除,比较序列被分类和重排次序(步骤716)。进程则流向RETURN(返回)。
显然,在图7中所示的进程说明一个比仅执行如图6所示那样所有可能值的直线比较更完善的方法。
本发明的另一个优选实施例是编译程序创建表,该表并行于在高级语言如COBOL或C中规定的状态。图8示出在一个表中两个并行的字段,该表可能为比较结构的一个优选实现而被创建的。尽管在相同的表中的两个并行字段被示出,但用两个并行表可以达到相同的结果。
图9示出处理在图1中屏幕一的Input(输入)字段的汇编程序代码,其从编译程序级语言如COBOL中产生。图9还示出访问在图8中所示的表中的字段和支持在图5中所示的高级语言中所表示的相同逻辑所要求的一个汇编程序代码。在这个更完善的方法中,尽管由于表处理需要额外的指令以便装载包含合法值的字段的地址和待装载菜单,实际上更多的指令被执行,然而为达到同样目标所需要的联机(inline)指令要少得多。
图10示出为最佳化比较结构的一个优选实现所创建的两个字段。在这个情况中,NULL输入被保留在表中而不是在代码中,如图6所示。图10示出访问字段和支持在图2A和2B中所示的高级语言中所表示的逻辑所需要的汇编程序代码。这个调整表数据的方法被一些制造商优化,这些制造商希望避免由于特定体系结构制约或自己强加于自己的方针制约而调整代码,也将被另一些制造商优化,那些制造商希望将一个程序生成的汇编程序代码的数量减至最小。
在图11中所示的汇编程序代码序列由编译程序以这样的方式所创建,即在所保留的NULL入口已被设置一次之后,一个假比较使得一个完全的反转到检验在序列中所有五个合法值的原来的比较技术。当所有五个值被试验时,TRUE比较使所保留的NULL入口被设置到引起TRUE比较的值。然而,当所保留的NULL输入已被设置,以及一个TRUE比较在第一比较(在标号‘CONT 1’上)被发现时,一个分支被立即进行到正确菜单装载语句。
这有益于所有五个保险用户类型,只要他们反复地输入‘INFIELD’的相同值,因为仅仅七个汇编程序语言指令将被执行以装载下一个菜单。如果假设将发生重复处理的情况,那么可以增添两个指令以进一步减少指令数目,如图12所示。
在图12中所示的汇编程序代码执行与在图11中的代码序列相同的功能。虽然两个额外的指令被生成,但在为反复比较已设置NULL输入之后,一个TRUE比较仅使得六个汇编程序指令被执行。
如前所述,代码或表值的立即调整不适合于所有用户。涉及用最后一个TRUE比较替换NULL入口的调整可以被立即执行或延迟执行。然而,分类表字段通常被延迟,因为在每次成功的比较之后的分类比重排在比较序列中比较语句的次序所实现的要花更多的时间。因此不是立即调整,而是可以延迟调整,然后根据用户或程序确定的取样周期执行调整。
图13A示出三个字段-来自图10的两个类似字段,加上一个记录用途模型的新的类似字段。虽然如一个内部表所示,但是这个数据也可以被记录在一个文件中并记录在一个外部媒体,如软盘、磁盘、磁带等上。
图13B示出表,其包括在按照本发明的一个优选实施例以放置在USETABLE字段中所记录值的降序记录了COMPTAB之后在图13A中所示的三个字段。
图14中的代码序列执行处理屏幕一所要求的比较,但不调整代码或表,它只简单地记录每个LEGAL VALUE(合法值)的TRUE比较的出现频率。应当指出,每个LEGAL VALUE所记录的USECOUNT值,那里LEGALVALUE被判定是TRUE。
图15示出根据是立即调整还是延迟调整以及根据应用程序的等同性来调用在图7中所示的处理的一种方法,如在本发明的一个优选实施例中所示。该方法通过判定比较序列的调整是否是一个立即调整来开始(步骤1502)。如果它是一个立即调整,则该方法直接流到图7的方法。如果它不是一个立即调整,则具有被调整的比较序列的程序必须被定义(步骤1504)。程序或应用程序可以由它的名字来定义,或者一组程序可以由它们的库或目录来定义。在一个程序已被定义之后,该方法获得至程序字头的寻址能力(步骤1506)。程序字头包括有用的信息,如在程序内有判别力比较结构的数目,下一个比较结构的地址、在那个结构中入口的数目以及自上次调整以来那个结构是否被使用的指示符。
其次,进行一个关于在应用程序中是否存在任何比较结构的判定(步骤1508)。如果在应用程序中存在比较结构,则判定比较表USECOUNT是否已被更改(步骤1510)。一个特定比较结构的USECOUNT是否已被更改的指示符可以在程序字头找到。如果USECOUNT自上次调整以来已被更改,则方法流到图7中的进程。
回到步骤1508,如果在程序内没有发现比较结构,进行一个在步骤1504上所定义的程序内是否存在另一个程序的判定。同样地,回到步骤1510,如果位于在程序中所发现的比较结构的比较表中的USECOUNT已被更改,则方法流到步骤1512。如果在表中没有定义附加的程序,则方法流到步骤1506,那个程序字头的寻址能力被获得。
另一方面,在完成图7所示的进程或在步骤1510上所发现的比较序列的调整情况下,图15的方法流到步骤1512,其中判定方法是否已抵达步骤1504中所定义的程序列表的终点。如果方法已在列表中最后一个程序上被执行,则方法结束。
在图14中所示的汇编程序代码序列执行与在图9中代码序列相同的功能。此外,成功地匹配的频率被记录在USECOUNT字段中,只要一个全局开关已被打开。这个记录也继续被执行,或由内部程序设置,例如一个根据系统时钟的间隔,来打开和关闭。一个取样因而可以在几乎任何用户所希望的标准的或特设的间隔上被创建。记录也可以在没有全局开关设置或试验情况下无条件地执行。
在一个问题已过去之后,表调整的方法是简单在。图13中所示的三个字段采用USECOUNT作为密钥被并行分类。这个技术将最经常发现的值首先放置在LEGAL VALUES字段,第二最经常发现的值然后放置在LEGAL VALUES字段,如此等等。排序所有的值可认为是最佳解决办法,但在一个经常重复的比较结构中,或许仅第一个输入必须被校正以便大大减少比较。其它数值分类也被执行。
例如,如果在COMPTAB表的USECOUNT字段中所有入口大致等效,则不需要以任何方式执行分类或调整表。缺乏由取样间隔所揭示的一个模型可能本来是有价值的信息。同样,如果所有入口的USECOUNT是零,则该代码不被运用且不需要调整。
所有上述讨论仅涉及一个比较结构。如前所述,比较结构在计算机代码是非常流行的,因为它们支持许多即使不是最多的“IF”和“IFTHENELSE”结构。至少有两种可能的方法用每个程序组装的联机代码,其具有有判别力的比较结构;或者一个特别设计的脱机程序以检验和调整具有有判别力的比较结构的其它程序。
在图7的流程图中示出经由联机代码处理的选项“单个程序比较调整”。处理一个或多个程序的选项在图15的流程图中被示出,“全局比较调整”。
如在本专业中众所周知的,所有可执行程序,不管是称为“目标模块”还是称为“装入模块”或“可执行”或“.exe”目标,都具有一个字头,它提供有关程序的技术信息,如程序的总的大小、在程序内定义的常数开始、外部程序的目标参数、在程序内所包含的工作域大小,等等。这个信息在包含有判别力的比较的一个模块中通过添加在程序中所包含的所有有判别力的比较结构的起始和终止地址的列表被增强。
图16示出一个包含比较语句序列信息的程序字头,其按照本发明加快判别比较进程。这个列表在“单一程序比较调整”期间被访问,以便查找和调整表数据,同时也在“全局比较调整”期间被访问,以便认出其时一个程序包含一个或多个判别比较结构。
在程序字头1600中所示的字头字段包括一个Number of CognitiveCompare Structure(判别比较结构的数目)字段1602的字段。通过了解在一个特定程序中判别比较结构的初始数目,在图15中所示的调整进程从在Address of Next Compare Structure(下一个比较结构的地址)字段1604中所保存的一个特定地址上找到的一个比较结构移到下一个比较结构,直到在应用程序中结构的总数已被用完为止。
重要的是,在本发明的另一个优选实施例中,比较结构而不是比较表能被重排次序。因此,比较结构可以被写到程序外部的一个存储单元并保留在Address of Next Compare Structure(下一个比较结构的地址)字段1604中。
分类在比较表中的并行字段要求知道在比较结构中比较语句的数目(在比较结构中入口的数目1606)和在比较结构中输入字段的宽度(一个入口的字节宽度1608),即使COMPTAB表的地址可能也从在下面的行CONT 2 MVC ADDR(COMPTAB),LENGTH(COMPTAB),ADDR(COMPTAB(REG4)上的比较结构中导出。下一个比较表的地址被列在输入在下一个比较表(COMPTAB)的入口地址1610上。最后,有关程序的技术信息被列在字头入口1612中。
应当指出下述内容是十分重要的,那就是尽管本发明是在全功能数据处理系统的意义上被描述的,但那些普通专业技术人员将知道,本发明的进程能以指令和各种格式的计算机可读媒体的形式分布,同时不管实际用于实现该分布的信号承载媒体的具体类型,本发明同样适用。计算机可读媒体的例子包括可记录型媒体,如软盘、硬盘驱动器、RAM、CD-ROM和传输型媒体,如数字和模拟通信链路。
本发明的上述说明仅为阐述和说明被给出,但不企图做到详尽无遗或将本发明限于所揭示的范围。许多修改和变形对那些普通专业技术人员来说是显而易见的。实施例被选择并说明,以便更好地解释本发明的原理和实际应用,同时能使其它专业技术人员了解本发明的具有各种修改的不同实施例,以便适合于所预期的具体用途。
权利要求
1.一个最佳化比较语句执行的数据处理的实施方法包括执行在一个比较序列中许多比较语句的至少一个;查找一个成功地被执行的比较语句;响应查找一个成功地被执行的比较语句,调整与比较序列有关的说明数据,其中说明数据变成被调整的说明数据;以及分类与比较序列有关的被调整的说明数据。
2.按权利要求1所述的数据处理的实现方法,其中调整的步骤还包括设置在说明数据中成功地被执行的比较语句为在被调整的说明数据中被执行的第一个比较语句。
3.按权利要求1所述的数据处理的实现方法,其中调整的步骤还包括根据查找一个成功地被执行的比较语句记录与比较序列有关的说明数据。
4.按权利要求1所述的数据处理的实现方法,还包括在一个所规定的取样周期内;访问与比较序列有关的被调整的说明数据;根据被调整的说明数据,执行在比较序列中许多比较语句的至少一个;查找一个成功地被执行的比较语句;和跟踪在规定的取样周期内成功地被执行的比较语句;响应跟踪成功地被执行的比较语句的要求,进一步调整与比较序列有关的说明数据;和储存进一步被调整的说明数据。
5.按权利要求1所述的数据处理的实现方法,还包括在一个所规定的取样周期内;访问与比较序列有关的被调整的说明数据;根据被调整的说明数据,执行在比较序列中许多比较语句的至少一个;查找一个成功地被执行的比较语句;和跟踪在规定的取样周期内所选择的成功地被执行的比较语句;响应跟踪所选择的成功地被执行的比较语句,进一步调整与比较序列有关的说明数据;和储存进一步被调整的说明数据。
6.按权利要求5所述的数据处理的实现方法还包括采用进一步被调整的说明数据执行在比较序列中许多比较语句的至少一个。
7.一种最佳化比较语句执行的数据处理的实现方法包括执行在一个比较序列中的比较语句;查找一个成功地被执行的比较语句;更新比较序列以反映查找成功地被执行的比较语句,其中比较序列被更新以便形成一个被更新的比较序列;储存被更新的比较序列;和执行被更新的比较序列。
8.按权利要求7所述的数据处理的实现方法,其中执行被更新的比较序列的步骤还包括在参考在被更新的比较序列中任何其它比较语句之前,参考成功地被执行的比较语句。
9.按权利要求7的数据处理的实现方法,其中更新的步骤还包括记录比较序列,其中成功地被执行的比较语句是在被更新的比较序列中任何其它比较语句之前的。
10.按权利要求7的数据处理的实现方法,其中更新的步骤还包括保持在比较序列中每个比较语句的成功执行的一个成功集合,其中该成功集合反映一个比较语句的成功执行的一个总数;和增加成功地被执行的比较语句的成功集合。
11.按权利要求7的数据处理的实现方法,其中更新的步骤还包括检索一个比较表,其中比较表包括一个比较语句字段,其标识在比较序列中的每个比较语句,以及一个集合成功字段,其列出在比较语句字段中所标识的每个比较语句的成功执行的一个集合数;和增加在一个比较语句字段中所标识的一个比较语句的每个成功执行的集合成功字段。
12.按权利要求11的数据处理的实现方法,其中更新的步骤还包括记录该比较表,其中比较语句的次序是根据集合成功字段排列的。
13.一个最佳化比较语句执行的数据处理的实现方法包括访问一组成功指示符,其中一个成功指示符反映一个比较语句的成功执行的数目,以及其中成功指示符组反映一组比较语句的成功执行的数目,以及其中一组比较语句构成一个比较结构;和根据访问成功指示符组从成功指示符组中提取一个成功指示符;将所提取的成功指示符与成功指示符组中剩余的成功指示符相比较;和根据比较所提取的成功指示符,优先执行在比较结构内的比较语句组。
14.按权利要求13的最佳化比较语句执行的数据处理的实现方法,其中比较的步骤在一个所规定的时间上被执行。
15.按权利要求13的最佳化比较语句执行的数据处理的实现方法,其中比较的步骤在执行比较语句组的至少一组之后立即被执行。
16.按权利要求13的最佳化比较语句执行的数据处理的实现方法,其中访问的步骤对在一个应用程序中包含的每个比较结构被执行。
17.按权利要求16的最佳化比较语句的数据处理的实现方法,其中比较结构是一个第一个比较结构,访问的步骤还包括判定在第一个比较结构中是否没有比较语句已被成功地执行;和根据在第一个比较结构中没有比较语句被成功地执行,访问与在应用程序中第二个比较结构中每一组比较语句有关的一组成功指示符。
18.按权利要求13的最佳化比较语句执行的数据处理的实现方法,其中与比较结构有关的信息在文件字头中可获得。
19.在权利要求16中所述的最佳化比较语句执行的数据处理的实现方法,其中比较结构是第一个比较结构,访问的步骤还包括判定在一个取样周期内在第一个比较结构中是否没有比较语句已被成功地执行;和根据在取样周期内在第一个比较结构中没有比较语句被成功地执行,访问与在应用程序中第二个比较结构中每一组比较语句有关的一组成功指示符。
20.按权利要求13的最佳化比较语句执行的数据处理的实现方法,还包括根据执行优先权执行一组比较语句;和记录在一个成功指示符中的一个比较语句的成功执行,其中该成功指示符反映比较语句的成功执行的总数。
21.一个最佳化比较语句执行的数据处理系统包括执行在一个比较序列中许多比较语句的至少一个的执行装置;查找一个成功地被执行的比较语句的查找装置;调整与比较序列有关的说明数据的调整装置,其中说明数据成为响应查找一个成功地被执行的比较语句的调整的说明数据;和储存与比较序列有关的被调整的说明数据的储存装置。
22.一个最佳化比较语句执行的数据处理系统包括执行在一个比较序列中的比较语句的执行装置;查找一个成功地执行的比较语句的查找装置;更新比较序列以反映查找成功地被执行的比较语句的更新装置,其中比较序列被更新以形成一个被更新的比较序列;储存被更新的比较序列的储存装置;和执行被更新的比较序列的执行装置。
23.按权利要求22的数据处理系统,其中执行被更新的比较序列的执行装置还包括在参考在被更新的比较序列中的任何其它比较语句之前参考成功地被执行的比较语句的参考装置。
24.按权利要求22的数据处理系统,其中更新的更新装置还包括记录比较序列的记录装置,其中成功地被执行的比较语句是在被更新的比较序列中任何其它比较语句之前的。
25.按权利要求22的数据处理系统,其中更新的更新装置还包括保持在比较序列中每个比较语句的成功执行的一个成功集合的保持装置,其中成功集合反映一个比较语句的成功执行的数目;和增加一个比较语句的成功执行的成功集合的增加装置。
26.按权利要求22的数据处理系统,其中更新的更新装置还包括检索一个比较表的检索装置,其中比较表包括一个比较语句字段,其标识在比较序列中每个比较语句,以及一个集合成功字段,其列出在比较语句字段中所标识的每个比较语句的成功执行的一个集合数;和增加在一个比较语句字段中所标识的一个比较语句的每个成功执行的集合成功字段的增加装置。
27.按权利要求26的数据处理系统,其中用于更新的更新装置还包括记录比较表的记录装置,其中比较语句字段的次序基于集合成功字段。
28.一个最佳化比较语句执行的数据处理系统包括访问一组成功指示符的访问装置,其中一个成功指示符反映一个比较语句的成功执行的数目,以及其中成功指示符组反映一组比较语句成功执行的数目,以及其中一组比较语句构成一个比较结构;根据访问成功指示符组从成功指示符组中提取一个成功指示符的提取装置;将所提取的成功指示符与从成功指示符组中剩余的成功指示符相比较的比较装置;和根据比较所提取的成功指示符优先执行在比较结构内的比较语句组的优先装置。
29.按权利要求28的最佳化比较语句执行的数据处理系统,其中用于比较的比较装置在一个被规定的时间内执行。
30.按权利要求28的最佳化比较语句执行的数据处理系统,其中用于比较的比较装置在执行比较语句组的至少一组之后立即被执行。
31.按权利要求28的最佳化比较语句执行的数据处理系统,其中用于访问的访问装置访问在一个应用程序中所包含的每个比较结构。
32.实现在一个数据处理系统中最佳化比较语句执行的一个方法的一个计算机程序产品,该计算机程序产品被体现在一个计算机可读媒体上并由指令组成,指令包括执行在一个比较序列中许多比较语句的至少一个的执行指令;查找一个成功地被执行的比较语句的查找指令;调整与比较序列有关的说明数据的调整语句,其中说明数据响应查找一个成功地被执行的比较语句成为被调整的说明数据;和储存与比较序列有关的被调整的说明数据的储存指令。
33.实现在一个数据处理系统中最佳化比较语句执行的一个方法的一个计算机程序产品,该计算机程序产品被体现在一个计算机可读媒体上并由指令组成,指令包括执行在一个比较序列中的比较语句的执行指令;查找一个成功地被执行的比较语句的查找指令;更新比较序列以反映查找成功地被执行的比较语句的更新指令,其中比较序列被更新以形成一个被更新的比较序列;储存被更新的比较序列的储存指令;和执行比较序列的执行指令。
34.实现在一个数据处理系统中最佳化比较语句执行的一个方法的一个计算机程序产品,该计算机程序产品被体现在一个计算机可读的媒体上并由指令组成,指令包括访问一组成功指示符的访问指令,其中一个成功指示符反映一个比较语句成功执行的数目,以及其中成功指示符组反映一组比较语句成功执行的数目,以及其中一组比较语句构成一个比较结构,根据访问成功指示符组从成功指示符组中提取一个成功指示符的提取指令;将被提取的成功指示符与来自成功指示符组中剩余的成功指示符相比较的比较指令;和根据比较被提取的成功指示符优先执行在比较结构内比较语句组的优先指令。
35.在一个数据处理系统中最佳化比较语句执行的一个数据结构,该数据结构被体现在一个计算机可读媒体上并由功能数据组成,功能数据包括与一个比较序列有关的说明数据;在说明数据中所包含的一个成功语句以标识在一个比较序列中的一个成功地被执行的比较语句;和在说明数据中所包含的一个执行语句以定义一个执行序列供执行在一个比较序列中至少一个比较语句。
36.在一个数据处理系统中最佳化比较语句执行的一个数据结构,该数据结构被体现在一个计算机可读媒体上并由功能数据组成,功能数据包括一个比较表,用于列出定义在一个比较序列中许多比较语句中的一个执行序列的功能数据,该表包括一个比较语句字段,用于标识在比较序列中的比较语句;和一个与每个比较语句字段有关的比较语句成功字段,用于说明有关比较语句的成功执行的一个可更新数目,其中比较语句成功字段定义一个执行序列供执行比较语句的至少一个。
全文摘要
一个比较序列至少被执行一次,那个执行的结果被用于调整该比较序列供该比较序列的下一次执行。在一个优选实施例中,在比较序列开始的时候,比较序列通过放置以前执行的TRUE比较语句被调整。在另一个优选实施例中,比较序列按与每个比较语句有关的TRUE比较的号码降序重排次序。比较序列可以在每次成功比较后立即被调整,或者用户可以规定比较序列调整的外部取样周期。调整可以是延迟调整的比较结构的一个单一程序调整,或者是延迟调整的程序的一个全局调整。
文档编号G06F17/22GK1271905SQ0010670
公开日2000年11月1日 申请日期2000年4月13日 优先权日1999年4月22日
发明者小W·杰斯科莱恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1