CN100405294C - 在运行时期间优化计算机程序的系统与方法 - Google Patents

在运行时期间优化计算机程序的系统与方法 Download PDF

Info

Publication number
CN100405294C
CN100405294C CNB2006100573827A CN200610057382A CN100405294C CN 100405294 C CN100405294 C CN 100405294C CN B2006100573827 A CNB2006100573827 A CN B2006100573827A CN 200610057382 A CN200610057382 A CN 200610057382A CN 100405294 C CN100405294 C CN 100405294C
Authority
CN
China
Prior art keywords
computer program
condition evaluation
calling
variable
execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006100573827A
Other languages
English (en)
Other versions
CN1834907A (zh
Inventor
B·M·奥康奈尔
R·E·内斯比特
K·E·沃甘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1834907A publication Critical patent/CN1834907A/zh
Application granted granted Critical
Publication of CN100405294C publication Critical patent/CN100405294C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/45525Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo

Abstract

用于在运行时期间优化计算机程序的系统、方法与程序产品。在运行时期间,确定计算机程序是否调用包括对固定变量的条件求值的方法,并且对固定变量的求值没有产生除返回执行计算机程序之外的任何成果。如果是,则为计算机程序的后续迭代而从计算机程序中删除对包括所述条件求值的方法的调用。从而,计算机程序的后续执行将产生如同所述条件求值已被执行的相同结果。如果对固定变量的求值产生了某些成果,则不从计算机程序的后续执行中删除对包括所述条件求值的方法的调用。

Description

在运行时期间优化计算机程序的系统与方法
技术领域
本发明一般地涉及计算机系统,更具体地说,涉及优化用于执行的程序代码的程序工具。
背景技术
计算机程序常常包括基于变量值的条件求值,例如“如果X=A,则进入步骤10000;否则进入步骤10010”。取决于变量“X”的当前值,条件可以是真或假。例如,当程序处于调试阶段时,变量“调试”被设置为“真”。存在这样的计算机程序,其对变量“调试”进行条件求值以确定是否应当记录对于调试目的有用的某些数据。换句话说,调试变量的状态被用在判定步骤中以确定是否记录数据。判定步骤可以是:“如果调试=真,则将XYZ数据写入日志;否则跳到下一步骤”。因此,如果调试变量被设置为“真”,则指定数据被写入日志。然而,如果程序没有处于调试阶段,例如程序已经完成了调试,则不需要将指定数据写入日志。因此,在调试阶段之后,程序开发者使用公知的程序工具将变量“调试”设置为“假”,从而XYZ数据将不被写入日志。并且,程序开发者将使用该工具来声明“调试”变量现在被固定(或不可变)为“假”。在Sun Microsystems Java(tm)编程语言和其它运行时语言中,该声明将由程序员输入作为被写入源代码中的命令。该命令意味着,一旦在执行期间变量第一次被设置为预期的固定状态,它将永不改变。在编译期间,编译器记录该声明,监视该变量,并且如果该变量的值被试图从其初始值改变,就返回错误代码。
美国专利6,728,952公开了一种用于标识总是为真或总是为假(即,“空”)的断言的计算机系统,并且指明如果IF语句所依赖的表达式被标识为空断言,则用于该IF语句的代码可以被优化。这是因为IF语句所依赖的表达式将总是为真或者将总是为假。该专利还指明已经存在专用计算机系统,其能够确定断言是否为空。
Auslander等人的名为“Fast,Effective Dynamic Compilation”的出版物,SIGPLAN Notices,vol.31,no.5,第149-159页,1996年5月,公开了多种运行时优化技术。例如,运行时常量可以成为指令立即数(instruction immediate)而非存储器负载,可以对它们应用常量传导与合并,基于它们的条件分支可以被消除,并且它们控制的循环可以被完全打开。
Calder等人的名为“Value Profiling”的出版物,Proceedings of 13thAnnual IEEE/ACM International Symposium on Micro architecture,第259-269页,1997年,公开了在编译时将变量标识为不变量或常量,这允许编译器执行包括常量合并、代码专用和部分求值的优化。
本发明的目的是进一步优化对程序的执行。
发明内容
本发明蕴含于用于在运行时期间优化计算机程序的系统、方法和程序产品中。在运行时期间,确定计算机程序是否调用包括对固定变量的条件求值的方法,并且除了返回执行计算机程序外对固定变量的求值不产生任何成果。如果是,则为计算机程序的后续迭代从计算机程序删除对包括条件求值的方法的调用。从而,计算机程序的后续执行将产生如同条件求值已被执行的相同结果。如果对固定变量的求值产生某些成果,则不从计算机程序的后续执行中删除对包括条件求值的方法的调用。
根据本发明的特征,对第一所述方法的调用被包含在计算机程序内的第二方法中,并且对固定变量的求值导致直接返回到第二方法。对固定变量的条件求值不产生对计算机程序之外的另一方法的调用或者计算机程序所需的任何计算或其它求值。在计算机程序的第一次迭代期间,变量值被设置为固定值,并且与该变量相关联的参量被计算。
附图说明
图1是结合了本发明的计算机的框图。
图2是根据本发明的计算机程序工具的流程图。
具体实施方式
现在将参考附图详细说明本发明。图1图示出结合并执行了本发明的计算机10。计算机10包括公知的CPU 12、操作系统14、运行时解释器XX 15、RAM 16、硬盘17、ROM 18、存储设备读取器20和网络适配器卡22。读取器20可以是存储媒体23的CD ROM读取器、DVD读取器、软盘读取器或其它读取器,在存储媒体23上,包含本发明的计算机程序产品可以被输入到计算机10。替代性地,网络适配器卡22可以从计算机可读网络24(例如因特网或LAN)读取包含本发明的计算机程序。网络24还包括传播媒体,用以将计算机程序输送到计算机10以被读取到计算机10中。一旦被输入到计算机10,则包含本发明的计算机程序工具30被存储在RAM 16或硬盘17中,用于在CPU 12上执行。图1还图示出根据本发明由CPU 12执行并由计算机程序工具30优化的另一计算机程序32。计算机程序32的功能或性质对本发明来说不重要,编写计算机程序32的计算机语言也不重要。计算机程序32已被编译器(未示出)编译为运行时/目标代码格式,以在计算机10中执行。作为示例,计算机程序32可以用Sun Microsystems JAVA(tm)编程语言编写。
图2图示出根据本发明由程序工具30执行的处理。在步骤100中,程序工具30获取要被优化并执行的程序32的“下一个”指令。在步骤100的第一次迭代期间,这应当是程序32的第一个指令,并且判定102通向判定104。(在程序32最后的指令被执行之后,则判定102将通向步骤106,步骤106是程序32和程序工具30的执行的结束。)在判定102之后,在肯定分支处,程序工具30确定程序32的指令是否是调用/调入(call/invoke)诸如“方法”的函数的命令(判定104)。“方法”是面向对象形式的函数,所述函数例如是记录数据、计算值、写入数据库、通过网络通信或链接数据串。如果指令不是调入函数的命令(判定104,否定分支),则程序工具30将程序32的指令传送至运行时解释器XX 15用以执行(步骤110)。然而,如果指令是调入方法的命令(判定104,肯定分支),则程序工具30调入该方法,即调用该方法开始执行(步骤112)。然后,被调用的方法开始执行。这可以包括被调用的方法准备随后将用于其自身执行或调用另一方法而需要的任何参量(步骤116)。作为示例,参量可以包括程序32的使用者的身份、计算系数、用于数据库的数据、网络端点地址或数据串。当存在这样的参量时,参量的准备可以包括计算、字符串的连接、数据的获取等。在准备参量之后,所调用的函数执行其操作指令或语句,例如对变量进行条件求值、计算结果、写入数据库、连接到端点或链接数据串(步骤120)。在被调用方法的每个指令或语句被传送到运行时解释器XX 15用于执行时,程序工具30监视程序指令或语句的性质(步骤122)。在该监视期间,程序工具30确定被调用方法的当前程序指令或语句是否将对变量进行条件求值并且按照变量值行动,所述变量被预先声明为固定的(判定130)。在该程序步骤中进行条件求值的所有值都是固定的。当程序32是以源代码编写的时候,这些声明将通过使用另一程序工具而出现,并且这些变量为固定的指示将已被编译到程序32的目标代码中。这在图1中由程序32中的参考数据象征性示出,即变量“X是固定的并且A是固定的”。下面是这种条件求值的示例:“如果X=A,则跳到步骤10000;否则跳到步骤10010C”、“如果X=真且A=假,则跳到步骤10000,否则跳到步骤10010C”、“当X>A时,则跳到步骤10000;否则跳到步骤10010C”。因此,通过寻找任何这些类型的条件求值,执行对判定130的确定。该确定是基于源代码中用于变量的修正关键字而做出的,所述修正关键字被编译在目标代码中。这种条件求值的形式列表被存储在存储器中。如果被调用方法的任何程序指令或语句都没有对固定的变量进行条件求值(判定130,否定分支),则程序工具30循环回步骤100以取得并处理程序32中的下一个程序指令或语句。然而,如果被调用方法的任何程序指令或语句将要对固定变量进行条件求值(判定130,肯定分支),则程序工具30确定固定变量的条件求值是否总是导致立即/直接返回到被调用方法的调入者,而不存在得自该方法的任何成果,例如没有对另一方法的调用、没有有用的计算、没有表达式求值、以及没有语句求值(判定132)。程序工具30通过检查前述条件求值的最终指令来做出该确定,以确定是否是返回到调入者。如果出现了某些成果(例如最终指令不是返回指令),则程序工具30进入步骤100以获取并处理程序32的下一个指令或语句。然而,如果没有从固定变量的条件求值中获得任何成果(除了返回到调用者)(判定132,肯定分支),则在步骤134中,程序工具30将删除调入方法中对被调入方法的调用(并从而避免执行条件求值)以及调入方法中计算用于对被调入方法的调用的参量所需的程序指令。步骤134中的删除优化了程序32的后续执行,因为现在在程序32的后续执行期间将只处理更少的指令。程序30通过重写目标代码来执行实际的指令删除。运行时环境XX 15包含用于修改(删除)当前运行的目标代码的工具。在上述步骤中由程序30标识出每个要被删除的语句。然后,程序30从方法调入返回,即,将程序计数器设置为等于得自条件求值的程序指令(步骤148)。然后,程序30前进到步骤100以获取并处理程序32的这个指令。
尽管由程序32调用的方法或者由该方法调用的任何方法所执行的操作对本发明来说不重要,但是下面是一个示例。在该示例中,程序32定义了含有两个函数方法的类C。下面是类C的伪代码:
类C的伪代码
ClassBody:
     ClassBodyDeclarations:
     FieldDeclaration:
          PCI Field X
    ConstructorDeclaration:
          SimpleTypeName:
               FormalParameterList:
                Empty
         ConstructorBody:
         Assignment X=True
MethodDeclaration:
    Method A
MethodDeclaration:
    Method B
类C的前述定义在主体的前三行中指示出变量“X”是固定的或构造后不可变的(“PCI”)。类C的前述定义在主体的中间六行中指示出不存在用于类C的构造函数的参数,并且变量“X”的值为“真”。类C的前述定义在主体的最后四行中指示出方法A和方法B被包含在类C中。
在该示例中,下面是方法A的伪代码:
方法A的伪代码
Method A:
    MethodHeader:
        MethodModifiers(opt)ResultType MethodDeclarator Throws(opt)
              ResultType:
                    Void
              MethodDeclarator:
                    Formal ParameterList:
                         Empty
MethodBody:
    Block:
         MethodInvocation(Method B)
              FormalParameterList:
                   Expression:
                        String1+String2+String3
方法A的前述定义在方法头部段中指示出该方法没有返回值并且没有接受参量。方法A的前述定义在方法主体段中指示出方法A包含调入方法B的调用。方法A的前述定义在方法主体段中指示出调入方法B的调用需要通过连接字符串(定义程序32的使用者)而形成的参量,即,连接String1+String2+String3。在调用方法B之前,方法A在调入方法B之前连接前述的字符串。
在该示例中,下面是方法B的伪代码:
方法B的伪代码
Method B:
   MethodHeader:
       MethodModifiers(opt)ResultType MethodDeclarator Throws(opt)
            ResultType:
                  Void
            MethodDeclarator:
                  Formal ParameterList:
                       String1
MethodBody:
    Block:
         IfThenElseStatement:
               If(X not equal True)
                     Then:
                           Expression involving String1
                     Else:
                           Return
方法B的前述定义在方法头部段中指示出方法B没有返回值,并且接受了被标为“String1”的串类型的一个参量。方法B的前述定义在方法主体段中指示出方法B执行对变量“X”的条件求值。即,“如果X不为真,则执行涉及String1的操作”。如果X为真,则立即/直接返回到调入者”(不发生任何成果,例如,不调入另一方法、不执行有用的计算、没有表达式求值以及没有语句求值)。
在程序32的执行期间,运行时解释器XX产生类C的新实例。在创建类C的该实例期间,运行时解释器XX记录变量“X”是固定的(如编译器所指出的那样),并且向程序32提供用于方法A的寻址信息。当程序32随后被调入并执行时,它调入方法A,方法A在步骤112中开始执行。作为响应,方法A首先在步骤116中通过连接String1+String2+String3来计算用于调用方法B的参量。在计算参量之后,方法A在步骤120中调入方法B。在方法A和方法B被执行的同时,程序30在步骤122中监视方法A和方法B的指令语句。在该监视期间,程序30注意到,在方法B中,变量“X”是固定的并且正与另一固定变量或固定值进行比较,并且结果是立即/直接返回到调入者(方法A)而不产生任何成果(判定130,肯定分支)。从而,通过从程序32的方法A中去除对方法B的调用以及相关联的计算用于对方法B的调用的参量的指令,程序30优化程序32。在程序30优化方法A之后,在步骤134中,包括在方括号[]中的下述步骤被从方法A中去除:
方法A的优化伪代码
Method A:
  MethodHeader:
      MethodModifiers(opt)ResultType MethodDeclarator Throws(opt)
              ResultType:
                    Void
              MethodDeclarator:
                    Formal ParameterList:
                         Empty
MethodBody:
    Block:
         [MethodInvocation(Method B)]
         [FormalParameterList:]
              [X]
              [Expression:]
                   [String1+String2+String3]
这样,在程序32的下一次迭代期间,当程序32调用方法A时,方括号[]中包括的前述步骤不会被执行。这减少了程序32的处理时间。
基于前述内容,已公开了一种在运行时期间优化计算机程序的系统、方法与程序产品。然而,在不脱离本发明的范围的条件下,可以做出多种修改和替换形式。因此,本发明是以示例性而非限制性的方式被公开的,并且应该参考以下权利要求来确定本发明的范围。

Claims (12)

1.一种用于在运行期间优化计算机程序的方法,所述方法包括下述步骤:
在运行期间,确定所述计算机程序是否调用包括对固定变量的条件求值的第一方法,并且对所述固定变量的条件求值没有产生除返回执行所述计算机程序之外的任何成果,以及
如果是,则从所述计算机程序中删除对包括所述条件求值的所述第一方法的调用,从而所述计算机程序的后续执行不再调用所述第一方法,其中所述计算机程序的所述后续执行将产生如同所述条件求值已被执行的相同结果,以及
如果不是,则不从所述计算机程序的所述后续执行中删除对包括所述条件求值的所述第一方法的所述调用.
2.如权利要求1所述的方法,其中对所述第一方法的调用被包括在所述计算机程序内的第二方法中,并且对所述固定变量的条件求值导致直接返回到所述第二方法.
3.如权利要求1所述的方法,其中对所述固定变量的所述条件求值没有导致对所述计算机程序之外的另一方法的调用并且没有导致所述计算机程序所需的任何计算或其它求值.
4.如权利要求1所述的方法,其中在所述计算机程序的第一次执行期间,所述变量的值被设置为固定值,并且与所述变量相关联的参量被计算.
5.如权利要求1所述的方法,其中所述计算机程序包括对固定变量的条件求值,并且对所述固定变量的条件求值没有产生除返回执行所述计算机程序之外的任何成果,该方法还包括下述步骤:从所述计算机程序中删除用于计算调用所述第一方法所需的参量的指令.
6.一种用于在运行期间优化计算机程序的系统,所述系统包括:
用于在运行期间确定所述计算机程序是否调用包括对固定变量的条件求值的第一方法的装置,并且对所述固定变量的条件求值没有产生除返回执行所述计算机程序之外的任何成果,以及
用于如下操作的装置:如果所述确定的结果为是则从所述计算机程序中删除对包括所述条件求值的所述第一方法的调用、从而所述计算机程序的后续执行不再调用所述第一方法,其中所述计算机程序的所述后续执行将产生如同所述条件求值已被执行的相同结果,并且如果所述确定的结果不是,则在所述计算机程序的所述后续执行中保留对包括所述条件求值的所述第一方法的所述调用.
7.如权利要求6所述的系统,其中对所述第一方法的调用被包括在所述计算机程序内的第二方法中,并且对所述固定变量的条件求值导致直接返回到所述第二方法。
8.如权利要求6所述的系统,其中对所述固定变量的所述条件求值没有导致对所述计算机程序之外的另一方法的调用并且没有导致所述计算机程序所需的任何计算或其它求值.
9.如权利要求6所述的系统,其中在所述计算机程序的第一次执行期间,所述变量的值被设置为固定值,并且与所述变量相关联的参量被计算.
10.如权利要求6所述的系统,其中所述计算机程序包括对固定变量的条件求值,并且对所述固定变量的条件求值没有产生除返回执行所述计算机程序之外的任何成果,该系统还包括用于从所述计算机程序中删除用于计算调用所述第一方法所需的参量的指令的装置.
11.一种用于在运行期间优化计算机程序的方法,所述计算机程序包括对第一方法的调用,所述第一方法包括对第二方法的调用,所述方法包括下述步骤:
在运行期间,确定所述第二方法是否包括对固定变量的条件求值,使得所述第二方法的执行没有产生除返回到所述第一方法之外的任何成果,以及
如果是,则在所述第一方法中删除对所述第二方法的所述调用,以及
如果不是,则不在所述第一方法中删除对所述第二方法的所述调用.
12.如权利要求11所述的方法,其中所述第一方法还包括用于计算所述第二方法的所述调用所需的参量的指令,并且所述第二方法包括对固定变量的条件求值,使得所述第二方法的执行不产生除返回到所述第一方法之外的任何成果,所述方法还包括下述步骤:从所述第一方法中删除用于计算所述第二方法的所述调用所需的所述参量的所述指令.
CNB2006100573827A 2005-03-15 2006-03-14 在运行时期间优化计算机程序的系统与方法 Expired - Fee Related CN100405294C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/081,054 2005-03-15
US11/081,054 US7797690B2 (en) 2005-03-15 2005-03-15 System, method and program product to optimize code during run time

Publications (2)

Publication Number Publication Date
CN1834907A CN1834907A (zh) 2006-09-20
CN100405294C true CN100405294C (zh) 2008-07-23

Family

ID=37002673

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100573827A Expired - Fee Related CN100405294C (zh) 2005-03-15 2006-03-14 在运行时期间优化计算机程序的系统与方法

Country Status (2)

Country Link
US (1) US7797690B2 (zh)
CN (1) CN100405294C (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6996558B2 (en) 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US7900133B2 (en) 2003-12-09 2011-03-01 International Business Machines Corporation Annotation structure type determination
US7440945B2 (en) 2005-11-10 2008-10-21 International Business Machines Corporation Dynamic discovery of abstract rule set required inputs
US7444332B2 (en) * 2005-11-10 2008-10-28 International Business Machines Corporation Strict validation of inference rule based on abstraction environment
US7873952B2 (en) * 2006-03-09 2011-01-18 Oracle America, Inc. Code transformation to optimize fragments that implement constant loading
JP2008059279A (ja) * 2006-08-31 2008-03-13 Internatl Business Mach Corp <Ibm> 文字列出力処理を最適化する技術
GB2451253A (en) * 2007-07-24 2009-01-28 Ezurio Ltd Indicating the position of a next declaration statement in object code when declaring a variable object code
US8407681B2 (en) * 2008-05-23 2013-03-26 International Business Machines Corporation System and method for changing variables at runtime
KR20120058455A (ko) * 2009-04-28 2012-06-07 인터내셔널 비지네스 머신즈 코포레이션 멀티 스레드 상에서 동작하는 프로그램의 프로그램 코드를 록 충돌이 적은 프로그램 코드로 변환하기 위한 방법, 및 그 컴퓨터 프로그램 및 컴퓨터 시스템
KR101644653B1 (ko) * 2010-03-19 2016-08-02 삼성전자주식회사 단말 적합성 애플리케이션 최적화장치 및 방법
US20120151187A1 (en) * 2010-12-13 2012-06-14 Microsoft Corporation Instruction optimization
WO2015008575A1 (ja) * 2013-07-19 2015-01-22 日産自動車株式会社 ソフトウェア検査装置、ソフトウェア検査方法、ソフトウェア検査プログラム
WO2017020941A1 (en) * 2015-07-31 2017-02-09 Hewlett-Packard Development Company, L.P. Category based execution scheduling
JP2018081592A (ja) * 2016-11-17 2018-05-24 富士通株式会社 コンパイルプログラム、コンパイル方法、およびコンパイル装置
US11379200B2 (en) * 2020-01-30 2022-07-05 Oracle International Corporation Method for applying graph-specific compiler optimizations to graph analysis programs

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0778521A2 (en) * 1995-12-08 1997-06-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
US6412108B1 (en) * 1999-05-06 2002-06-25 International Business Machines Corporation Method and apparatus for speeding up java methods prior to a first execution
CN1374585A (zh) * 2001-03-02 2002-10-16 国际商业机器公司 优化链接后代码的方法和装置
US20020174418A1 (en) * 2001-03-30 2002-11-21 Microsoft Corporation Constant return optimization transforming indirect calls to data fetches
JP2003280922A (ja) * 2002-03-26 2003-10-03 Hitachi Ltd コードサイズ削減方法
CN1461991A (zh) * 2002-05-30 2003-12-17 惠普公司 在计算机程序正在运行时改进它们的性能
CN1512334A (zh) * 2002-12-26 2004-07-14 �Ҵ���˾ 程序变换装置和程序变换方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
US5907711A (en) * 1996-01-22 1999-05-25 Hewlett-Packard Company Method and apparatus for transforming multiplications into product table lookup references
US6463581B1 (en) * 1996-10-03 2002-10-08 International Business Machines Corporation Method for determining reachable methods in object-oriented applications that use class libraries
US6286135B1 (en) * 1997-03-26 2001-09-04 Hewlett-Packard Company Cost-sensitive SSA-based strength reduction algorithm for a machine with predication support and segmented addresses
US6101326A (en) * 1997-05-29 2000-08-08 Hewlett-Packard Company Method and apparatus for frame elimination for simple procedures with tail calls
JPH11237980A (ja) * 1998-02-20 1999-08-31 Hitachi Ltd オブジェクト指向最適化コード生成装置及び方法
US6427234B1 (en) 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
CA2248393A1 (en) 1998-09-24 2000-03-24 Ibm Canada Limited-Ibm Canada Limitee Identification of vacuous predicates in computer programs
US6654951B1 (en) * 1998-12-14 2003-11-25 International Business Machines Corporation Removal of unreachable methods in object-oriented applications based on program interface analysis
US6363522B1 (en) * 1999-04-23 2002-03-26 Sun Microsystems, Inc. Method and apparatus for handling exceptions as normal control flow
US6766514B1 (en) 1999-10-19 2004-07-20 General Electric Co. Compiler having real-time tuning, I/O scaling and process test capability
US6588009B1 (en) * 1999-11-29 2003-07-01 Adelante Technologies Nv Method and apparatus for compiling source code using symbolic execution
US6598181B1 (en) * 2000-07-11 2003-07-22 Microsoft Corporation Method and system for debugging multiple function calls
CA2321016A1 (en) * 2000-09-27 2002-03-27 Ibm Canada Limited-Ibm Canada Limitee Interprocedural dead store elimination
US7086044B2 (en) * 2001-03-22 2006-08-01 International Business Machines Corporation Method, article of manufacture and apparatus for performing automatic intermodule call linkage optimization
US7131119B2 (en) * 2001-05-30 2006-10-31 International Business Machines Corporation Code optimization
US7222337B2 (en) * 2001-05-31 2007-05-22 Sun Microsystems, Inc. System and method for range check elimination via iteration splitting in a dynamic compiler
US6839893B2 (en) * 2001-10-18 2005-01-04 International Business Machines Corporation Debugger capable of providing warnings for unreachable breakpoints
JP3813087B2 (ja) * 2001-12-20 2006-08-23 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラム変換方法、コンピュータ装置及びプログラム
JP3900485B2 (ja) * 2002-07-29 2007-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体
US7353503B2 (en) * 2002-12-27 2008-04-01 Sun Microsystems, Inc. Efficient dead code elimination
US7376941B2 (en) * 2004-04-16 2008-05-20 Agility Design Solutions Inc. Inferring function calls in an ambiguous language computer program
US7318223B2 (en) * 2004-08-26 2008-01-08 International Business Machines Corporation Method and apparatus for a generic language interface to apply loop optimization transformations
US7568187B2 (en) * 2004-12-09 2009-07-28 American Express Travel Related Services Company, Inc. System and method for runtime detection of program parameters

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0778521A2 (en) * 1995-12-08 1997-06-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
US6412108B1 (en) * 1999-05-06 2002-06-25 International Business Machines Corporation Method and apparatus for speeding up java methods prior to a first execution
CN1374585A (zh) * 2001-03-02 2002-10-16 国际商业机器公司 优化链接后代码的方法和装置
US20020174418A1 (en) * 2001-03-30 2002-11-21 Microsoft Corporation Constant return optimization transforming indirect calls to data fetches
JP2003280922A (ja) * 2002-03-26 2003-10-03 Hitachi Ltd コードサイズ削減方法
CN1461991A (zh) * 2002-05-30 2003-12-17 惠普公司 在计算机程序正在运行时改进它们的性能
CN1512334A (zh) * 2002-12-26 2004-07-14 �Ҵ���˾ 程序变换装置和程序变换方法

Also Published As

Publication number Publication date
CN1834907A (zh) 2006-09-20
US7797690B2 (en) 2010-09-14
US20060212862A1 (en) 2006-09-21

Similar Documents

Publication Publication Date Title
CN100405294C (zh) 在运行时期间优化计算机程序的系统与方法
CN112100054B (zh) 一种面向数据管控的程序静态分析方法和系统
US8091075B2 (en) Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US7788640B2 (en) Using code analysis to generate documentation
US7386577B2 (en) Dynamic determination of transaction boundaries in workflow systems
US5987250A (en) Transparent instrumentation for computer program behavior analysis
CN101957773B (zh) 用于多轮次动态概要分析的方法及其系统
US7254810B2 (en) Apparatus and method for using database knowledge to optimize a computer program
US7318215B1 (en) Stored procedure interface language and tools
US8122440B1 (en) Method and apparatus for enumerating external program code dependencies
JPH08512152A (ja) インクリメンタル生成システム
CN111104335B (zh) 一种基于多层次分析的c语言缺陷检测方法及装置
JP2008505423A (ja) 最適化されたプログラムのためのアンワインド情報の生成
US8423980B1 (en) Methods for handling inlined functions using sample profiles
JP2001184218A (ja) Mpiプログラムのコンパイルにおける最適化方法
US20020062478A1 (en) Compiler for compiling source programs in an object-oriented programming language
US7496889B2 (en) Whitespace keywords
CN109299004B (zh) 关键元素差异性分析方法及系统
Wood et al. Triton: a domain specific language for cyber-physical systems
Yang et al. A function level Java code clone detection method
CN109308256A (zh) 一种java程序动态分析方法、设备和存储介质
Farkas et al. Improving productivity in large scale testing at the compiler level by changing the intermediate language from C++ to Java
JPH08180094A (ja) アーキテクチャ・シミュレータ
CN114329492A (zh) 一种针对Go语言链码的漏洞检测方法
KR100309674B1 (ko) 실시간데이터베이스관리시스템의트랜잭션전처리방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080723

Termination date: 20190314