|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。1、CLR概述
CLR次要卖力托管代码的编译和运转。在.NET中代码的编译分为两个阶段:
1.把源代码编译为Microsoft两头言语(MSIL)。
2.CLR把MSIL编译为平台公用的代码。
在CLR的把持下运转的代码经常称为托管代码(managedcode)。托管代码的长处:
1.平台有关性。源代码先编译成两头言语,运转时由CLR将两头言语编译成平台公用的代码,跟Java的字节代码一样,如许便可完成平台有关性。
2.进步功能。起首,MSIL比Java的字节码感化还要年夜,由于MSIL是立即编译的,而Java的字节码经常是注释性的,在转换为平台可实行代码的时分大概会招致功能丧失。其次,.NET的立即编译器(JIT)(JustInTime)并不是一次把全体代码编译完才实行,而是只编译挪用的那部分代码,并把失掉的这部份内部可实行代码保留起来,下次必要挪用的时分不必从头编译。Microsoft以为这个历程要比一入手下手编译全部使用程序代码的效力高很多,由于任何程序的年夜部分代码实践上并非在每次运转过程当中都实行。最初,传统的编译器会优化代码,但它们的优化历程是自力于代码所运转的特定处置器的。比方VisualStudio6优化了一台一样平常的Pentium呆板,它所天生的代码就不克不及使用PentiumШ处置器的硬件特征。而JIT与平台有关,以是它能够针对分歧的呆板完成分歧的优化。
java是注释型的言语,由于固然java也必要编译,编译成.class文件,可是并非呆板能够辨认的言语,而是字节码,终极仍是必要jvm的注释,才干在各个平台实行,这同时也是java跨平台的缘故原由。以是但是说java便是编译型的,也是注释型,可是假如非要回类的话,从观点上的界说,生怕java应当回到注释型的言语中。
盘算机不克不及间接了解初级言语,只能间接了解呆板言语,以是必需要把初级言语翻译成呆板言语,盘算机才干实行初级言语编写的程序。翻译的体例有两种,一个是编译,一个是注释。
1).编译型言语写的程序实行之前,必要一个专门的编译历程,把程序编译成为呆板言语的文件,好比exe文件,今后要运转的话就不必从头翻译了,间接利用编译的了局就好了(exe文件),由于翻译只做了一次,运转时不必要翻译,以是编译型言语的程序实行效力高。
2).注释则分歧,注释性言语的程序不必要编译,省了道工序,注释性言语在运转程序的时分才翻译,好比注释性basic言语,专门有一个注释器可以间接实行basic程序,每一个语句都是实行的时分才翻译。如许注释性言语每实行一次就要翻译一次,效力对照低。
编译型言语息争释型言语的区分:前者因为程序实行速率快,一律前提下对体系请求较低,因而像开辟操纵体系、年夜型使用程序、数据库体系等时都接纳它,像C/C++、Pascal/ObjectPascal(Delphi)、VB等基础都可视为编译言语;而一些网页剧本、服务器剧本及帮助开辟接口如许的对速率请求不高、对分歧体系平台间的兼容性有必定请求的程序则一般利用注释性言语,如Java、JavaScript、VBScript、Perl、Python、MATLAB等等。你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:) |
|