CN1834907A - 在运行时期间优化计算机程序的系统与方法 - Google Patents
在运行时期间优化计算机程序的系统与方法 Download PDFInfo
- Publication number
- CN1834907A CN1834907A CNA2006100573827A CN200610057382A CN1834907A CN 1834907 A CN1834907 A CN 1834907A CN A2006100573827 A CNA2006100573827 A CN A2006100573827A CN 200610057382 A CN200610057382 A CN 200610057382A CN 1834907 A CN1834907 A CN 1834907A
- Authority
- CN
- China
- Prior art keywords
- computer program
- variable
- evaluation
- condition evaluation
- calling
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation 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。替代性地,网络适配器卡20可以从计算机可读网络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 (13)
1.一种用于在运行时期间优化计算机程序的方法,所述进程包括下述步骤:
在运行时期间,确定所述计算机程序是否调用包括对固定变量的条件求值的方法,并且对所述固定变量的求值没有产生除返回执行所述计算机程序之外的任何成果,以及
如果是,则为所述计算机程序的后续迭代从所述计算机程序中删除对包括所述条件求值的所述方法的调用,其中所述计算机程序的所述后续执行将产生如同所述条件求值已被执行的相同结果,以及
如果不是,则不从所述计算机程序的所述后续执行中删除对包括所述条件求值的所述方法的所述调用。
2.如权利要求1所述的方法,其中对第一所述方法的调用被包括在所述计算机程序内的第二方法中,并且对所述固定变量的求值导致直接返回到所述第二方法。
3.如权利要求1所述的方法,其中对所述固定变量的所述条件求值没有导致对所述计算机程序之外的另一方法的调用或者所述计算机程序所需的任何计算或其它求值。
4.如权利要求1所述的方法,其中在所述计算机程序的第一次迭代期间,所述变量的值被设置为固定值,并且与所述变量相关联的参量被计算。
5.如权利要求1所述的方法,其中所述计算机程序包括对固定变量的条件求值,并且对所述固定变量的求值没有产生任何成果,并且还包括下述步骤:如果所述变量具有除了所述固定值之外的值,则从所述计算机程序中删除用于计算继续进行所需的参量的指令。
6.一种用于在运行时期间优化计算机程序的系统,所述系统包括:
用于在运行时期间确定所述计算机程序是否调用包括对固定变量的条件求值的方法的装置,并且对所述固定变量的求值没有产生除返回执行所述计算机程序之外的任何成果,以及
如果是则用于为所述计算机程序的后续迭代从所述计算机程序中删除对包括所述条件求值的所述方法的调用的装置,其中所述计算机程序的所述后续执行将产生如同所述条件求值已被执行的相同结果,并且如果不是,则该装置在所述计算机程序的所述后续执行中保留对包括所述条件求值的所述方法的所述调用。
7.如权利要求6所述的系统,其中对第一所述方法的调用被包括在所述计算机程序内的第二方法中,并且对所述固定变量的求值导致直接返回到所述第二方法。
8.如权利要求6所述的系统,其中对所述固定变量的所述条件求值没有导致对所述计算机程序之外的另一方法的调用或者所述计算机程序所需的任何计算或其它求值。
9.如权利要求6所述的系统,其中在所述计算机程序的第一次迭代期间,所述变量的值被设置为固定值,并且与所述变量相关联的参量被计算。
10.如权利要求6所述的系统,其中所述计算机程序包括对固定变量的条件求值,并且对所述固定变量的求值没有产生任何成果,并且还包括用于如果所述变量具有除了所述固定值之外的值则从所述计算机程序中删除用于计算继续进行所需的参量的指令的装置。
11.一种用于在运行时期间优化计算机程序的计算机程序产品,所述计算机程序产品包括:
计算机可读媒体;
用于实现前述方法权利要求中的任何一种方法的程序指令。
12.一种用于在运行时期间优化计算机程序的方法,所述计算机程序包括对第一方法的调用,所述第一方法包括对第二方法的调用,所述进程包括下述步骤:
在运行时期间,确定所述第二方法是否包括对固定变量的条件求值,使得所述第二方法的执行没有产生除返回到所述第一方法之外的任何成果,以及
如果是,则在所述第一方法中删除对所述第二方法的所述调用,以及
如果不是,则不在所述第一方法中删除对所述第二方法的所述调用。
13.如权利要求12所述的方法,其中所述第一方法还包括用于计算对所述第二方法的所述调用所需的参量的指令,并且所述第二方法包括对固定变量的条件求值,使得所述第二方法的执行不产生除返回到所述第一方法之外的任何成果,并且还包括下述步骤:从所述第一方法中删除用于计算对所述第二方法的所述调用所需的所述参量的所述指令。
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 true CN1834907A (zh) | 2006-09-20 |
CN100405294C 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) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609292A (zh) * | 2010-12-13 | 2012-07-25 | 微软公司 | 指令优化 |
CN105556484A (zh) * | 2013-07-19 | 2016-05-04 | 日产自动车株式会社 | 软件检查装置、软件检查方法、软件检查程序 |
CN108633310A (zh) * | 2015-07-31 | 2018-10-09 | 慧与发展有限责任合伙企业 | 基于类别的执行调度 |
Families Citing this family (12)
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 | 삼성전자주식회사 | 단말 적합성 애플리케이션 최적화장치 및 방법 |
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 |
Family Cites Families (31)
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 |
US5794044A (en) * | 1995-12-08 | 1998-08-11 | Sun Microsystems, Inc. | System and method for runtime optimization of private variable function calls in a secure interpreter |
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 |
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 |
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 |
US6966055B2 (en) * | 2001-03-02 | 2005-11-15 | International Business Machines Corporation | Optimizing post-link code |
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 |
US7028293B2 (en) * | 2001-03-30 | 2006-04-11 | Microsoft Corporation | Constant return optimization transforming indirect calls to data fetches |
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 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換方法、コンピュータ装置及びプログラム |
JP2003280922A (ja) * | 2002-03-26 | 2003-10-03 | Hitachi Ltd | コードサイズ削減方法 |
US7577951B2 (en) * | 2002-05-30 | 2009-08-18 | Hewlett-Packard Development Company, L.P. | Performance of computer programs while they are running |
JP3900485B2 (ja) * | 2002-07-29 | 2007-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 最適化装置、コンパイラプログラム、最適化方法、及び記録媒体 |
JP3956131B2 (ja) * | 2002-12-26 | 2007-08-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラム変換装置、プログラム変換方法及びプログラム |
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 |
-
2005
- 2005-03-15 US US11/081,054 patent/US7797690B2/en not_active Expired - Fee Related
-
2006
- 2006-03-14 CN CNB2006100573827A patent/CN100405294C/zh not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609292A (zh) * | 2010-12-13 | 2012-07-25 | 微软公司 | 指令优化 |
CN102609292B (zh) * | 2010-12-13 | 2016-05-04 | 微软技术许可有限责任公司 | 指令优化 |
CN105556484A (zh) * | 2013-07-19 | 2016-05-04 | 日产自动车株式会社 | 软件检查装置、软件检查方法、软件检查程序 |
CN108633310A (zh) * | 2015-07-31 | 2018-10-09 | 慧与发展有限责任合伙企业 | 基于类别的执行调度 |
Also Published As
Publication number | Publication date |
---|---|
US7797690B2 (en) | 2010-09-14 |
CN100405294C (zh) | 2008-07-23 |
US20060212862A1 (en) | 2006-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1834907A (zh) | 在运行时期间优化计算机程序的系统与方法 | |
EP2494468B1 (en) | Context-sensitive slicing for dynamically parallelizing binary programs | |
Lattner et al. | Making context-sensitive points-to analysis with heap cloning practical for the real world | |
US8566810B2 (en) | Using database knowledge to optimize a computer program | |
CN1153141C (zh) | 调试优化代码的方法和设备 | |
CN1304941C (zh) | 用于自主硬件辅助的线程栈跟踪的装置与方法 | |
US8108839B2 (en) | Method and apparatus for tracing execution of computer programming code using dynamic trace enablement | |
US8255891B2 (en) | Computer-implemented method and system for improved data flow analysis and optimization | |
US20060048114A1 (en) | Method and apparatus for dynamic compilation of selective code blocks of computer programming code to different memory locations | |
US20040199904A1 (en) | Method and apparatus for obtaining profile data for use in optimizing computer programming code | |
CN1234551A (zh) | 动态优化字节编码程序的方法和装置 | |
JP2002073349A (ja) | 統一データ型システムおよび方法 | |
US20130139132A1 (en) | Method and system for program building | |
CN104536898A (zh) | C程序并行区域的检测方法 | |
US11080029B2 (en) | Configuration management through information and code injection at compile time | |
US8037463B2 (en) | Computer program functional partitioning system for heterogeneous multi-processing systems | |
US8752056B2 (en) | Running native code across single or multi-core hybrid processor achitecture | |
US7478376B2 (en) | Computer program code size partitioning method for multiple memory multi-processing systems | |
US20020062478A1 (en) | Compiler for compiling source programs in an object-oriented programming language | |
US7496889B2 (en) | Whitespace keywords | |
CN1295778C (zh) | 一种验证芯片硬件行为与软件模拟行为的一致性的方法 | |
CN111679859B (zh) | 一种面向i/o密集型高性能应用的自动化并行mpi-i/o加速方法 | |
CN112416313B (zh) | 支持大整数数据类型和运算符的编译方法 | |
US6772414B1 (en) | Lifetime-sensitive mechanism and method for hoisting invariant computations out of loops in a computer program | |
Yang et al. | A function level Java code clone detection method |
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 |
Granted publication date: 20080723 Termination date: 20190314 |
|
CF01 | Termination of patent right due to non-payment of annual fee |