[发明专利]动态优化字节编码程序的方法和装置无效
申请号: | 98118294.1 | 申请日: | 1998-10-06 |
公开(公告)号: | CN1234551A | 公开(公告)日: | 1999-11-10 |
发明(设计)人: | U·赫尔茨勒;R·格雷瑟梅尔;D·格里斯沃尔德 | 申请(专利权)人: | 太阳微系统有限公司 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 中国专利代理(香港)有限公司 | 代理人: | 王勇,王忠忠 |
地址: | 美国加利*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 动态 优化 字节 编码 程序 方法 装置 | ||
本发明一般涉及优化软件应用程序执行的方法和装置。更具体来说,本发明涉及在运行期间为了优化软件应用程序而动态地决定部分代码应当被解释还是被编译的方法和装置。
用计算机系统共享计算机系统网络(例如局域网、内连网和因特网)资源的情况正在增加。相应地,软件应用程序或计算机程序可能要以不同的格式传递给不同的计算机系统,这是因为,有的计算机系统通常要求软件应用程序要采用专门适合该特定计算机系统的格式。另外,也可以将计算机程序以与机器无关的格式(即按字节代码)传递给计算机系统,以便使一种格式的计算机程序能被许多不同的计算机系统使用。
如果计算机程序是以与机器无关的格式传递的,则可以直接解释程序,或者,也可以将程序翻译成与机器有关的代码,即“机器代码”。直接解释的程序比翻译成机器代码的程序占用较少的计算机系统空间。然而在多数情况下,直接解释的程序比翻译成机器代码的程序的执行速度慢。因此,决定直接解释计算机程序还是将计算机程序翻译成机器代码,经常是根据空间与执行速度之间的相对重要性。
如上所述,可以按字节代码将计算机程序传递给计算机系统。接收字节代码的计算机系统一般含有用于在运行时编译字节代码的编译程序。在运行时编译字节代码的结果是将字节代码翻译成机器代码。图1A表示一个具有字节代码编译程序的计算机系统的框图。字节代码104可以以计算机程序的形式被传递或用其它方式提供给计算机系统105。字节代码104一般可以由各种不同的源提供。当字节代码104被执行时,字节代码104要在运行时用编译程序106编译。编译程序106生成的编译代码108一般是系统105专用的、并能在该系统105中执行的与机器有关的代码。就是说,编译程序106在运行时将字节代码106翻译成编译代码108。
有些计算机系统能在发现部分以前编译的代码要被反复执行时,使这部分以前编译的代码被“重新编译”成以更高效率执行的格式。换言之,可以用成本更高的第二个编译过程来编译被反复调用的以前编译的代码以便能更高效率地执行该反复调用的代码。图1b是表示使用两个编译过程的计算机系统的框图。计算机系统115包括第一个编译程序116和第二个编译程序122。字节代码114被提供给计算机系统115执行。运行时,第一个编译程序116将字节代码114翻译成与机器有关的编译代码118或日机器代码。
执行与机器有关的编译代码118,追踪与机器有关的编译代码118所含的不同子程序(method),以确定何时用第二个编译程序编译最经常被调用的子程序。当确认了高度执行的(或者说反复执行的)编译代码120时,就重新编译该高度执行的编译代码120,以提高计算机程序的总体执行速度。因此,第二个编译程序122要将高度执行的编译代码120翻译成重新编译的高度执行代码124。
第二个编译程序122经常是比第一个编译程序116慢的编译程序,尽管用第二个编译程序122编译的代码一般比第一个编译程序116编译的代码执行的效率更高。因此,确定何时重新编译高度执行的编译代码120涉及在总体运行时间中额外的编译开销与重新编译的高度执行代码124带来的效率提高之间作出权衡。
为提高效率而允许将预先编译的代码重新编译的一个系统,要根据特定部分的编译代码(例如子程序)被调用的次数来确定是否重新编译预先编译的代码。如果该子程序被调用的次数超过一个固定的界限值,该子程序就被重新编译。这个固定的界限值本质上是一个固定阈值,它反映该子程序被重新编译以提高执行效率之前,该子程序被调用的次数。
在运行时如果用编译程序将字节代码翻译成与机器有关的代码,总体程序执行中经常加入了很大的编译开销。因此,尽管机器代码可能比解释代码执行的速度快,要是总是将程序的所有部分都编译成机器代码后再执行机器代码,如果增加的执行速度不能弥补与编译该程序关联的开销,则这种做法并不可取。换言之,如果花费在编译该程序上的时间不能在程序的执行期间得到弥补,则程序以解释代码执行起来会更快。
在一个如上所述的现有系统中,尽管重新编译被编译过的程序中的例程可能具有使程序执行效率更高的作用,用固定界限值来确定例程何时应当被重新编译反而会导致低效率的(即非优化的)执行。例如,如果这样设定固定界限值,使程序中的每一个例程实际上都要被重新编译,则由重新编译获得的提高的执行速度可能不会弥补与重新编译关联的编译开销。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于太阳微系统有限公司,未经太阳微系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/98118294.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于一圆形外壳的冷却或加热装置
- 下一篇:电压控制振荡器的控制