CN1645319A - 优化网络环境下部分计值服务的方法 - Google Patents
优化网络环境下部分计值服务的方法 Download PDFInfo
- Publication number
- CN1645319A CN1645319A CN 200510023465 CN200510023465A CN1645319A CN 1645319 A CN1645319 A CN 1645319A CN 200510023465 CN200510023465 CN 200510023465 CN 200510023465 A CN200510023465 A CN 200510023465A CN 1645319 A CN1645319 A CN 1645319A
- Authority
- CN
- China
- Prior art keywords
- bytecode
- evaluation
- program
- class
- class file
- 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.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种用于网络服务领域的优化网络环境下部分计值服务的方法,将进行程序转换和程序例化的部分计值技术引入到Java虚拟机,通过字节码的例化,利用部分计值技术优化服务,预先计算某些常量表达式,消除一些判断条件和冗余代码以产生高效程序,减少服务间的通信,生成仅含有部分动态参数的剩余程序,将通用服务例化为更有效的实现,以Java虚拟机语言的子集为计值对象,原程序经过编译产生字节码程序,字节码程序再经过部分计值,产生例化后的字节码程序,利用部分计值优化服务的方法需要解析字节码,加载运行时环境,然后计值字节码程序。本发明能保持通用设计和高效执行间的一致性,从根本上改善Java程序运行效率,缩短字节代码长度,减少运行时间。
Description
技术领域
本发明涉及的是一种用于网络服务技术领域的方法,特别是一种优化网络环境下部分计值服务的方法。
背景技术
网络运行性能是网络发展的一个重要研究问题。跨平台性使Java成为网络服务和分布式计算的主要开发语言,但Java虚拟机解释执行字节码的特点对应用的运行速度有很大限制。虽然Just-in-Time(即时)编译和Hotspot技术能在一定程度改善程序执行效率,但要以牺牲内存为代价,且改善不显著。目前存在的服务优化主要从服务设计角度考虑优化措施。
经对现有技术的文献检索发现,Mark Nottingham在《Proceedings of theSixth International Workshop on Web Caching and Content Distribution》上发表的文章“Optimizing Web Services with Intermediaries”(“利用中间件优化网络服务”,“2001年第六界国际网络分布式缓存和目录会议论文集”35-39页,会议在美国马萨诸塞州,6月20-22日,2001召开)中,提出通过优化中间件和模块化设计来优化和扩展服务。中间件技术使得在广域网内能够共享和使用服务,通过优化中间件来改善已有的运行服务,同时避免代码部署和管理产生的问题。采用缓存,消息聚集机制,块状数据的整体传输方法优化中间件技术,从而改善网络服务的运行性能和效率。这些技术某些程度上提高了系统和服务的通用性、复用性和扩展性,却引出了运行效率方面的副作用,特别是对那些涉及大量计算的特殊应用领域,程序变得庞大,运行效率降低。
发明内容
本发明的目的在于克服现有技术中存在的不足和缺陷,提供一种优化网络环境下部分计值服务的方法,使其针对Java程序的执行特点,在保持网络服务通用性和复用性前提下,加快服务运行速度,提高服务运行性能的方法。
本发明是通过以下技术方案实现的,将进行程序转换和程序例化的部分计值技术引入到Java虚拟机,通过字节码的例化,利用部分计值技术优化服务,预先计算某些常量表达式,消除一些判断条件和冗余代码以产生高效程序,减少服务间的通信,生成仅含有部分动态参数的剩余程序,将通用服务例化为更有效的实现。以Java虚拟机语言的子集为计值对象,原程序经过编译产生字节码程序,字节码程序再经过部分计值,产生例化后的字节码程序。利用部分计值优化服务的方法需要解析字节码,加载运行时环境,然后计值字节码程序。
以下对本发明作进一步的说明,具体步骤如下:
(1)读入和输出类文件。根据程序的已知输入条件,即字节码程序的运行环境,包括当前方法的操作数栈内容、局部变量集合中变量的状态来确定如何例化字节码程序。
对Java字节码进行部分计值,必须首先解析类文件;且运行时环境的构造依赖于类文件的解析。在类文件输入过程中,才能构造运行时环境,整个类文件的解析由ClassType(类型)类完成,读取和分析待计值的类文件,ConstantPool(常量池)提取常数池信息,FieldPool(域池)提取域和生成的指令对象序列,实例化计值过程中的新类,保存完成部分计值的类文件。为避免多次实例化某个类的对象时重复解析该类文件,实现中用类池管理解析过的ClassType对象,经过部分计值的字节码仍存储为类文件格式。
(2)模拟Java虚拟机对字节码解释执行,调用部分计值算法对字节码进行在线部分计值。解析类文件结构得到ConstantPool,并将状态信息保存在向量中。采用预先计算常量表达式,消除冗余代码,改变算法或数据结构等方法例化类文件,得到优化后的二进制格式虚拟机指令序列,封装至Instruction(指令)类中,籍以管理成员方法和成员变量信息。
运行时环境包括字节码载入、运行时堆栈、字节码解释器。字节码载入负责在路径中查询要载入的类,并触发类文件的解析;运行时堆栈为动态分配的对象提供内存管理;字节码解释器负责解释执行Java字节码,调用部分计值算法进行例化。运行环境包含用于动态链接、正常方法返回及异常传递的信息。动态链接把标识符形式的方法调用翻译成实际方法调用,装载必要的类,解释未定义的符号,并把变量访问翻译成与变量运行时存储结构相适应的偏移地址。ClassLoader(类装载器)用于读入字节码,管理类的二进制表示,解析字节码,构造各种相关数据结构。Heap(堆)负责运行期间的内存管理,如对象驻留空间,构造和管理这些对象。
(3)采用在线部分计值算法根据预先定义好的表达式和语句的语法、语义和计值规则对解析后的类文件生成的计值对象例化。
由于在线部分计值算法需要在程序运行过程中记录运行栈及一些数据属性的变化情况,故部分计值内嵌于运行时环境中。Java程序的访问涉及到成员变量和对象的调用,对应的虚拟机指令包括操作对象域指令和调用方法指令。采用部分计值对虚函数调用,堆栈,数组,内嵌方法及不确定条件下控制转移指令进行例化。可以计值某个方法和单个对象,还可以计值多个对象。部分计值例化当前指令时,将改变运行环境;若不例化当前指令,则将该指令放入剩余程序中并保持原运行环境。
本发明利用部分计值技术可以预先执行递归计算,预先计算某些常量表达式,消除一些判断条件和冗余代码,减少服务间的通信,生成高效的的剩余程序。同时,多次调用例化后的程序,可以减少虚拟分配的初始化、操作数堆栈和局部值存储的次数,从而提高服务和系统的运行效率。运行光线跟踪程序,通过部分计值,原始程序变化为例化程序。给定某场景下,光线与球体的求交函数为:
interact_sphere(sphereType sphere,rayType ray)
{ ……
x=sphere.c.x-ray.p.x;
y=sphere.c.y-ray.p.y;
z=sphere.c.z-ray.p.z;
b=x*ray.v.x+y*ray.v.y+z*ray.v.z;
……
}
当第24个球体的中心点为(1.0,1.0,1.0)时,原程序变为:
interact_sphere_24(rayType ray)
{ ……
x=1.0-ray.p.x;
y=1.0-ray.p.y;
z=1.0-ray.p.z;
b=x*ray.v.x+y*ray.v.y+z*ray.v.z;
……
}
当参数ray.p的原点已知,为(1.0,2.0,1.0),则例化后的程序为.
{ ……
b=-y*ray.v.y;
……
}
与现有技术相比,本发明是一种新的改进性能的优化措施,能够保持通用设计和高效执行间的一致性,从根本上改善Java程序运行效率,促进网络技术发展。部分计值技术能针对服务运行特性,产生特定环境下的高效运行程序,在很大程度上解决运行效率问题,缩短字节代码长度,减少运行时间。
附图说明
图1为部分计值模型
图2为部分计值方法的结构图
图3为运行环境的结构图
具体实施方式
以下结合附图以及方法内容提供实施例:
图1给出了部分计值的模型。原程序经过编译器产生类文件的字节码程序,字节码程序经过计值后生成例化后的字节码程序。
在部分计值过程中,以Java字节码序列为计值对象,使用在线计值方法,不对程序进行约束时间分析,仅记录字节码程序的每条指令、变量、堆栈的状态及变化情况。解析类文件结构得到常量池,并将状态信息保存在向量中,得到二进制格式虚拟机指令序列,封装至Instruction类中,以管理成员方法和成员变量信息。在例化后的字节码程序中,通过预先计算常量表达式,消除冗余代码,改变算法或数据结构等方法,缩短了字节代码长度。多次调用该例化后的字节码程序,可减少虚拟分配的初始化、操作数堆栈和局部值存储的次数,提高多次重复执行同一程序的效率。
图2给出了部分计值方法的组成结构图,由字节码解析,运行时环境和部分计值组成。运行时环境模拟Java虚拟机对字节代码解释执行;字节码解析负责读入类文件,输出类文件,经过部分计值的字节码仍存储为类文件格式;采用在线部分计值算法对解析后的类文件生成的计值对象进行部分计值。
图3给出了运行时环境的结构图。运行时环境包括字节码载入、运行时堆栈、字节码解释器。字节码载入负责在路径中查询要载入的类,并触发类文件的解析;运行时堆栈为动态分配的对象提供内存管理;字节码解释器负责解释执行Java字节码,调用部分计值方法进行例化。
以下表格是本实施例的结果,表1为类shape(成形)的原程序,表2为经过编译器产生的字节码程序,表3为经过部分计值后的字节码程序。类shape的main(主)方法中,由于在计值过程时两个条件分支语句指令序列判定条件已经计算出,确定了要执行的条件分支,所以这两个序列不出现在剩余程序的指令序列中,从而精简了原字节码程序。优化后的字节码程序(表3)中的代码长度比原字节码程序(表2)明显减少了,运行时间也缩短了。
表1:原程序
class shape{public static void main{float largeeArea;float LatgerGirth;rectangle rect=new rectangle(9f,8f);circle circ=new circle(3.5f);float gr=rect.circumference();float gc=circ.citcumference();float ar=rect.area();float ac=circ.area();if(gr>=gc){LargetGirth=gr; | }else{LargerGirth=gc;}if(ar>=ac){LargerArea=ar;}else{LargerArea=ac;}} |
表2:原字节码程序
new0,2dupidc3idc4invoke_special0,5astore_3new0,6dupidc7invoke_special0,8astore_4aload_3invoke_virtual0,9fstore5 | aload4invoke_virtual0,afstore6aload_3invoke_virtual0,bfstore7aload4invoke_virtual0,cfstore8fload5fload6fcmpleifit0,9fload5 | fstore_2goto0,6fload6fstore_2fload7fload8fcmplifit0,9fload7fstore_1goto0,6fload8fstore_1return |
表3:部分计值后的字节码程序
new0,2dupldc3ldc4invoke_special0,5astore_3new0,6dup | 1dc7invoke_special0,8astore4ldc25fstore5ldc26fstore6ldc27 | fstore7ldc28fstore8fload5fstore_2fload7fstore_1return |
Claims (5)
1、一种优化网络环境下部分计值服务的方法,其特征在于,将进行程序转换和程序例化的部分计值技术引入到Java虚拟机,通过字节码的例化,利用部分计值技术优化服务,预先计算常量表达式,消除一些判断条件和冗余代码,减少服务间的通信,生成仅含有部分动态参数的剩余程序,将通用服务例化为更有效的实现,以Java虚拟机语言的子集为计值对象,原程序经过编译产生字节码程序,字节码程序再经过部分计值,产生例化后的字节码程序,利用部分计值优化服务的方法需要解析字节码,加载运行时环境,然后计值字节码程序。
2、根据权利要求1所述的优化网络环境下部分计值服务的方法,其特征是,以下通过操作步骤对其进一步限定:
(1)读入和输出类文件,根据程序的已知输入条件,即字节码程序的运行环境,包括当前方法的操作数栈内容、局部变量集合中变量的状态来确定如何例化字节码程序;
(2)模拟Java虚拟机对字节码解释执行,调用部分计值算法对字节码进行在线部分计值,解析类文件结构得到ConstantPool,并将状态信息保存在向量中,采用预先计算常量表达式,消除冗余代码,改变算法或数据结构例化类文件,得到优化后的二进制格式虚拟机指令序列,封装至Instruction类中,籍以管理成员方法和成员变量信息;
(3)采用在线部分计值算法根据预先定义好的表达式和语句的语法、语义和计值规则对解析后的类文件生成的计值对象例化。
3、根据权利要求2所述的优化网络环境下部分计值服务的方法,其特征是,所述的步骤(1),对Java字节码进行部分计值,必须首先解析类文件,且运行时环境的构造依赖于类文件的解析,在类文件输入过程中,才能构造运行时环境,整个类文件的解析由ClassType类完成读取和分析待计值的类文件,ConstantPool提取常数池信息,FieldPool提取域和生成的指令对象序列,实例化计值过程中的新类,保存完成部分计值的类文件,为避免多次实例化某个类的对象时重复解析该类文件,实现中用类池管理解析过的对象,经过部分计值的字节码仍存储为类文件格式。
4、根据权利要求2所述的优化网络环境下部分计值服务的方法,其特征是,所述的步骤(2),运行时环境包括字节码载入、运行时堆栈、字节码解释器,字节码载入负责在路径中查询要载入的类,并触发类文件的解析,运行时堆栈为动态分配的对象提供内存管理,字节码解释器负责解释执行Java字节码,调用部分计值算法进行例化;运行环境包含用于动态链接、正常方法返回及异常传递的信息,动态链接把标识符形式的方法调用翻译成实际方法调用,装载必要的类,解释未定义的符号,并把变量访问翻译成与变量运行时存储结构相适应的偏移地址,ClassLoader用于读入字节码,管理类的二进制表示,解析字节码,构造各种相关数据结构,Heap负责运行期间的内存管理,如对象驻留空间,构造和管理这些对象。
5、根据权利要求2所述的优化网络环境下部分计值服务的方法,其特征是,所述的步骤(3),由于在线部分计值算法需要在程序运行过程中记录运行栈及一些数据属性的变化情况,故部分计值内嵌于运行时环境中,Java程序的访问涉及到成员变量和对象的调用,对应的虚拟机指令包括操作对象域指令和调用方法指令,采用部分计值对虚函数调用,堆栈,数组,内嵌方法及控制转移指令进行例化,计值某个方法,单个对象和多个对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510023465 CN1645319A (zh) | 2005-01-20 | 2005-01-20 | 优化网络环境下部分计值服务的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510023465 CN1645319A (zh) | 2005-01-20 | 2005-01-20 | 优化网络环境下部分计值服务的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1645319A true CN1645319A (zh) | 2005-07-27 |
Family
ID=34875875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510023465 Pending CN1645319A (zh) | 2005-01-20 | 2005-01-20 | 优化网络环境下部分计值服务的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1645319A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693150A (zh) * | 2012-05-11 | 2012-09-26 | 深圳市华为技术软件有限公司 | 基于计费专有领域的虚拟机的处理方法及装置 |
CN104090745A (zh) * | 2014-04-18 | 2014-10-08 | 北京奇虎科技有限公司 | 一种优化游戏运行环境的方法和装置 |
CN104346148A (zh) * | 2013-07-30 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
WO2019024674A1 (zh) * | 2017-07-31 | 2019-02-07 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
WO2022134537A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京握奇数据股份有限公司 | 一种字节码指令集精简方法和系统 |
-
2005
- 2005-01-20 CN CN 200510023465 patent/CN1645319A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693150A (zh) * | 2012-05-11 | 2012-09-26 | 深圳市华为技术软件有限公司 | 基于计费专有领域的虚拟机的处理方法及装置 |
CN102693150B (zh) * | 2012-05-11 | 2016-06-08 | 深圳市华为技术软件有限公司 | 基于计费专有领域的虚拟机的处理方法及装置 |
CN104346148A (zh) * | 2013-07-30 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
CN104346148B (zh) * | 2013-07-30 | 2017-10-20 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
CN104090745A (zh) * | 2014-04-18 | 2014-10-08 | 北京奇虎科技有限公司 | 一种优化游戏运行环境的方法和装置 |
WO2019024674A1 (zh) * | 2017-07-31 | 2019-02-07 | 众安信息技术服务有限公司 | 智能合约处理方法及装置 |
WO2022134537A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京握奇数据股份有限公司 | 一种字节码指令集精简方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10534590B2 (en) | Dynamic recompilation techniques for machine learning programs | |
US8510710B2 (en) | System and method of using pooled thread-local character arrays | |
CN100339831C (zh) | 应用于Java操作系统中虚拟机的编译体系实现方法 | |
US8296745B2 (en) | Method and apparatus for portable stub generation | |
US6925639B2 (en) | Method and system for register allocation | |
JP2000322315A (ja) | データを管理する方法及び装置 | |
US20040003377A1 (en) | Converting byte code instructions to a new instruction set | |
JPH09330233A (ja) | 最適目的コード生成方法 | |
US20070156967A1 (en) | Identifying delinquent object chains in a managed run time environment | |
CN1645319A (zh) | 优化网络环境下部分计值服务的方法 | |
US7028293B2 (en) | Constant return optimization transforming indirect calls to data fetches | |
CN115809063A (zh) | 一种存储过程编译方法、系统、电子设备和存储介质 | |
CN103092618A (zh) | 基于软件Cache的Dalvik虚拟机JIT加速方法 | |
CN111966397A (zh) | 一种异构并行程序自动移植和优化方法 | |
CN100549958C (zh) | 一种类文件装载方法和系统 | |
Iosif et al. | Using garbage collection in model checking | |
US20080147696A1 (en) | Method for reducing memory size allocated by a string class using unicode | |
CN108459968B (zh) | 一种面向对象代码的视在能耗评估方法 | |
Patrício et al. | Locality-aware GC optimisations for big data workloads | |
CN103150197A (zh) | 基于静态划分的代码Cache管理方法 | |
US11573794B2 (en) | Implementing state-based frame barriers to process colorless roots during concurrent execution | |
US11875193B2 (en) | Tracking frame states of call stack frames including colorless roots | |
Hassan et al. | Compilation of interaction nets | |
EP1033651B1 (en) | Instruction translation method | |
CN117270822A (zh) | 一种不中断应用服务的Java代码布局优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |