A. 什么是即时编译
JIT(just-in-time compilation)指计算机领域里,即时编译也被成为动态翻译,是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术。即时编译前期的两个运行时理论是字节码编译和动态编译。
在编译为字节码的系统如 Limb 编程语言,Smalltalk, UCSD P-System, Perl, GNU CLISP, 和 java 的早期版本中, 源代码被翻译为一种中间表示即字节码。 字节码不是任何特定计算机的机器码, 它可以在多种计算机体系中移植。字节码被解释着运行在虚拟机里。
动态编译环境是一种在执行时使用编译器的编译环境。 例如, 多数 Common Lisp 系统有一个编译函数,他可以编译在运行时创建的函数。
B. C#源代码编译成为本地代码的编译过程
很有兴趣的话,可以去阅读下JeffreyRitchie的《ClrviaC#》,目前出到第三版,英文好的话强烈推荐看英文版的,而且我有该电子书和实体书。
下面讲下我的理解:大致上不会出什么差错的,细节部分你可以参照上面的书籍!
1.首先,c#源码经过c#编译器被编译成托管模块(IL中间代码、元数据(Metadata))
2.然后,使用C#编译器以及程序集链接器(AssemblyLinker----AL.exe)将上述托管模块以及项目的资源文件Combine(整合)成一个程序集(Assembly)
上述程序集就是你所看到的exe文件或者dll文件等等,程序集中包含了manifest描述文件,是该程序集内容以及关系的一个清单,具体的内容你可以参见JR的书跟Java中的类似!
双击该exe运行的时候:
3.最后,运行时,CLR装载对应的程序集,使用内部的三个即时编译器(常用的为JIT),再去根据本机的环境去进行相应的优化(针对CPU优化等等),即时的翻译成本地机器指令去执行。
还有一个本地化代码生成工具,NGen.exe~~
这个最好能去看看那本JR的神作!细节不是我三言两语能讲清的~~
C. java解释器和编译器分别是什么
Java的编译方式有两种,一种是和C++等语言一样的,把源代码编译成和本地机器平台相关的机器语言,叫即时编译。另一种是编译成一种中间的字节码,与机器平台无关的,这种也是常用的,叫解释型的。
即时编译器因为产生的是本地机器的机器码,能直接执行;不像字节码还要在JVM(Java虚拟机)上解释运行,所以执行得更快些。
请采纳!
D. 即时编译器和JAVA解释器的区别
即时编译器预先把程序编译完成,当执行时就直接调用。
而JAVA解释器则是当需要调用该代码时才临时编译解释,而且没执行一次就要编译一次,而即时编译器则是一次编译多次执行。
E. native code是什么意思啊
本地代码(native code)是计算机编程(代码),编译用来运行一个特殊的处理器(如英特尔x86级的处理器)和它的特殊指令集。如果同一个程序在不同的处理器上执行的话软件就必须能够模拟出旧的处理器的指令。这种情况下,同一个程序是在模拟模式下运行的,这样就会导致它比在本机模式下运行速度慢。(这个程序可以重写并且重新编译这样就可以用新的处理器执行本机模式了。)本地代码也可以与字节码区分开来(有时候叫做编译代码),这种代码可以在虚拟机上运行(比如JAVA虚拟机)。虚拟机是一个把通用字节码转换成用于特定处理器的本地代码的程序。微软的.NET编译器产生的就是字节码(微软叫它作中间语言)。Java字节码和微软的中间语言都能在执行前被即时编译器编译成高性能的本机代码。
F. JIT编译器的简介
在Java编程语言和环境中,即时编译器(JIT compiler,just-in-time compiler)是一个把Java的字节码(包括需要被解释的指令的程序)转换成可以直接发送给处理器的指令的程序。当你写好一个Java程序后,源语言的语句将由Java编译器编译成字节码,而不是编译成与某个特定的处理器硬件平台对应的指令代码(比如,Intel的Pentium微处理器或IBM的System/390处理器)。字节码是可以发送给任何平台并且能在那个平台上运行的独立于平台的代码。
G. 3DS模拟器着色器即时编译什么意思
模拟着色器正在高效运行。
绝大多数的Java实现都依赖即时编译以提高代码的运行效率。
即时编译在运行时将代码翻译为机器码,可以达到与静态编译语言相近的执行效率。Python的第三方实现PyPy通过即时编译明显改善了解释器的性能。
H. java的‘编译器’与‘即时编译器’有什么区别
你好!编译器(在windows下,javac.exe)将源代码(java文件)编译为字节码(bytecode),存放在class文件中。
字节码不能直接在机器上执行,而是通过虚拟机(windows下是java.exe)执行。具体的执行方式有两种:
1. 一般情况下解释执行。解释执行并不是“解释为用c++语言写成的程序”,而是jvm把字节码看成脚本,根据字节码中的指令,由JVM去调用实际的本地方法。
2. 在打开了JIT参数的前提下,jvm会把执行过程中发现的热点位置,由jvm内部的即时编译器编译为本地机器码直接执行。
编译器将java文件编译为class文件,解释器将class文件变为机器语言
I. C++编译器即时编译问题。
断点中断后所在的行是尚未运行准备运行的行,你可以按F10单步运行过去之后,就看到结果了。
if(ia[x++]<ia[x])
这句中由于 ++ 在后,所以判断运算先进行,然后再增一,这种前后书写有关系只有在多重运算下才会生效,单独的 x++ 和 ++x 没有区别。
J. java的解释执行方式是: javac hello.java java hello 那么即时编译方式的命令该怎么输
哪种方式,都不是说你即时输入命令,而是javac Hello.java
java Hello