首页 / 知识
关于Java:字节码比本机代码有什么优势?
2023-04-14 11:14:00

What are advantages of bytecode over native code?看起来您可以用字节码做的任何事情,都可以像使用本机代码一样轻松快捷地完成。 从理论上讲,您甚至可以通过以字节码分发程序和库,然后在安装时编译为本机代码,而不是JIT来保持平台和语言的独立性。 因此,通常来说,什么时候您要执行字节码而不是本机? 来自SGI的Hank Shiffman说(很久以前,但这是事实):
因此,在考虑字节码与本机代码时,请考虑在可移植性,安全性,大小和执行速度之间进行权衡。如果速度是唯一重要的因素,请本地化。如果其他任何一个更重要,请使用字节码。 我还要补充一点,对于每个发行版,维护一系列以相同代码库为目标的操作系统和面向体系结构的编译可能会变得非常乏味。在多个平台上使用相同的Java字节码并使其"正常工作"是一个巨大的胜利。 如果对任何程序进行编译,使用概要分析并将其结果反馈给编译器进行第二遍,则基本上任何程序的性能都会提高。实际使用的代码路径将得到更积极的优化,将循环展开到正确的程度,并且热指令路径被安排为最大化I $命中率。 所有的好东西,但是几乎从来没有做过,因为要经过很多步骤来构建二进制文件很烦人。 这是在将字节码编译为本地代码之前运行一段时间的优势:配置信息自动可用。即时编译后的结果是针对程序正在处理的特定数据的高度优化的本机代码。 与静态编译器可以安全使用的相比,能够运行字节码还可以实现更积极的本机优化。例如,如果某个函数的参数之一始终为NULL,则可以从本机代码中省略对该参数的所有处理。将对函数序幕中的参数进行简短的有效性检查,如果该参数不为NULL,则VM将中止回到字节码并再次开始配置。 字节码创建了额外的间接级别。 这种额外的间接级别的优点是:
一些缺点:
所有好的答案,但我的热键被按下-性能。 如果正在运行的代码将所有时间都花在调用库/系统例程上-文件操作,数据库操作,发送Windows消息,那么将其JITted无关紧要,因为大部分时间都花在等待那些较低的时间上, 级操作完成。 但是,如果代码中包含我们通常称为"算法"的东西,这些东西必须快速并且不要花太多时间调用函数,并且如果经常使用这些函数会导致性能问题,那么JIT非常重要。 此处:http://slashdot.org/developers/02/01/31/013247.shtml 快来看看Slashdot的极客怎么说!有点过时,但很好的评论! 我认为您只是回答了自己的问题:平台独立性。产生与平台无关的字节码,并将其分发到其目标平台。执行后,它可以在执行开始之前或同时(及时)快速编译为本地代码。 Java JVM以及大概的.NET运行时都基于此原理进行操作。 理想情况下,您将具有可移植的字节码,可以将"及时"编译为本地代码。我认为没有JIT的字节码解释器存在的原因主要是由于以下事实:本机代码编译增加了虚拟机的复杂性。构建,调试和维护该附加组件需要花费时间。并非每个人都有时间或资源做出这一承诺。 次要因素是安全性。验证解释程序不会崩溃比确保对本机代码相同不会容易得多。 第三是性能。生成机器代码通常比解释仅运行一次的小段代码的字节代码花费更多的时间。 与本地代码相比,可移植性和平台独立性可能是字节码最显着的优势。 |
最新内容
相关内容
linux编译源代码命令?
linux编译源代码命令?,工具,代码,百度,最新,环境,项目,系统,电脑,密码,内核,linux怎样编译git源码包1、linux的源码是在/usr/src这个目录下,此linux编译时显示命令?
linux编译时显示命令?,系统,基础,工具,代码,百度,下来,网上,命令,内核,文件,LINUX中此程序运行后,为何刷新不出命令提示符?1、有几个原因:一:你linux安装浏览器命令?
linux安装浏览器命令?,官网,系统,平台,网站,管理,设备,咨询,工具,官方网站,软件,linuxcentos浏览器在哪里1、linux安装google浏览器方法如下:启linux安装sz命令?
linux安装sz命令?,系统,软件,标准,服务,工作,工具,命令,位置,平台,百度,如何在SecureCRT中给linux上传和下载文件1、需要上传或者下载,需要使用linux安装纯命令行?
linux安装纯命令行?,软件,系统,发行,环境,基础,工作,工具,公司,终端,命令,如何在纯linux命令行模式下安装linux桌面,redhat5.4_01、在Linux中linux安装更新命令?
linux安装更新命令?,软件,系统,项目,名称,管理,数据,网站,工作,官方网站,命令,linux常用安装软件的命令1、)bin包,如jdk-1_5_0_05-linux-i58bin,linux安装dep命令?
linux安装dep命令?,系统,软件,策略,管理,对比,时间,工具,名字,平台,代码,如何在Linux内核里增加一个系统调用?1、在一个进程中创建3个线程,名字linux中如何编译命令?
linux中如何编译命令?,系统,代码,基础,暂停,环境,工具,百度,命令,文件,终端,在linux0.12系统中编译0.12内核时,使用什么命令利用tar命令,可以把linux本地安装命令?
linux本地安装命令?,软件,系统,工具,在线,数据,官网,环境,名称,命令,文件,linux怎么安装软件1、使用rpm类型的软件包进行安装,虽然排在最前面但linux下安装微信命令?
linux下安装微信命令?,软件,系统,工具,官网,平台,近日,服务,认证,体系,官方网站,如何在Linux系统下运行微信Web开发者工具微信小程序注册 在微linux下载安装包命令?
linux下载安装包命令?,软件,系统,名称,位置,数据,名字,通讯,灵活,最新,管理,如何定制安装linux软件?1、linux安装软件的三种方式如下:源代码编linux安装操作命令?
linux安装操作命令?,系统,工作,地址,工具,服务,情况,信息,命令,最新,管理,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令