C中的JIT的作用,C#JIT的概念及作用

2020-11-21 18:12:11 字数 4776 阅读 9607

1楼:匿名用户

简单的将就是实时编译.***语言的高级**成il,让clr可执行,具体的你要看看clr书籍

c#jit的概念及作用

2楼:匿名用户

c#编写的程序,经过编译器把编译后,源**被转换成microsoft中间语言(msil)。msil不是真正可执行的**。因此,要真正执行msil应用程序,还必须使用“jit编译器”,对msil再次编译,以得到主机处理器可以真正执行本机指令。

jit编译器以即时方式编译m**il**,以便应用程序执行。

c#中il/msil,cts,cls,clr,jit分别是什么!

3楼:匿名用户

il/msil (microsoft intermediate language) 微软中间语言 (il是msil的缩写,译为中间语言)cts (***mon type system)通用类型系统cls (***mon language specification)公共语言规范clr (***mon language runtime)公共语言运行时(也有的叫公共语言运行库)jit (just in time)即时编译器

c#主要可以做什么?

4楼:匿名用户

c#(读做 "c sharp",中文译音“夏普”)是微软公司发布的一种面向对象的、运行于.*** framework之上的高级程序设计语言,并定于在微软职业开发者论坛(pdc)上登台亮相.c#是微软公司研究员anders hejlsberg的最新成果.

c#看起来与java有着惊人的相似;它包括了诸如单一继承,界面,与java几乎同样的语法,和编译成中间**再运行的过程.但是c#与java有着明显的不同,它借鉴了delphi的一个特点,与***(组件对象模型)是直接集成的,而且它是微软公司.*** windows网络框架的主角.

在本文中,我将考察创建一种新计算机语言的一般动机,并将特别指明是什么原因导致了c#的出现.然后我将介绍c#和它与java,c,c++的相似之处.其次我将讨论一些存在于java和c#之间的高层次的,和基础的差别.

我将以衡量在用多种语言开发大型应用程序的时候所需的知识(或者对这种知识的缺乏程度)来结束本文,而这正是.***和c#的一个主要战略.目前,c#和.

***还只能以c#语言规则,以及windows 2000的一个"d预览版本",还有msdn上迅速增多的文档集子的形式获得(还没有最终定型).

微软c#语言定义主要是从c和c++继承而来的,而且语言中的许多元素也反映了这一点.c#在设计者从c++继承的可选选项方面比java要广泛一些(比如说structs),它还增加了自己新的特点(比方说源**版本定义).但它还太不成熟,不可能挤垮java.

c#还需要进化成一种开发者能够接受和采用的语言.而微软当前为它的这种新语言大造声势也是值得注意的.目前大家的反应是:

"这是对java的反击."

c#更象java一些,虽然微软在这个问题上保持沉默.这也是意料中的事情,我觉得,因为java近来很成功而使用java的公司都报告说它们在生产效率上比c++获得了提高.

java所带来的巨大影响和大家对它的广泛接受已经由工作于这种语言和平台之上的程序员数量明显的说明了(估计世界范围内共有两百五十万程序员使用java).由这种语言写成的应用程序的数量是令人惊讶的并已经渗透了每一个级别的计算,包括无线计算和移动**(比如日本发明的java**).c#能够在用户领域获得这样的礼遇吗?

我们必须等待并观望,就象已经由ssi公司的ceo和主席kalpathi s. suresh指出来的那样,"我发现所有这些都是渐进的.如果c#不存在,我们总能回到java或c和c++.

这些都不完全是新技术;它们在更大的意义上来说只是大公司制造的市场噱头.我们必须给他们时间安顿下来看看这些是不是真的对it工业有什么影响."

c#从java继承而来的特点

类:在c#中类的申明与java很相似.这是合理的因为经验告诉我们java模型工作得很好.

java的关键字import已经被替换成using,它起到了同样的作用.一个类开始执行的起点是静态方法main().下面的hello world程序展示了基本的形式:

using system;

class hello }

在这个例子中,system这个名字指向一个包括了基本c#实用类集合的命名空间(namespace).这个命名空间包括了console类,它在这个例子中被用来输出一个字符串.类可以是抽象的和不可继承的:

一个被申明成abstract的类不能被实例化;它只能被用做一个基类.c#关键字sealed就象java关键字final,它申明一个类不是抽象的,但是它也不能被用做另一个类的基类.界面:

就象在java中一样,一个界面是一组方法集合的抽象定义.当一个类或结构体实现一个界面的时候,它必须实现这个界面中定义的所有方法.一个单一的类可以实现几个界面.

也许以后会出现一些微妙的差别,但是这个特点看起来与java相比没有变化.布尔运算:条件表达式的结果是布尔数据类型,布尔数据类型是这种语言中独立的一种数据类型.

从布尔类型到其他类型没有直接的转换过程.布尔常量true和false是c#中的关键字.错误处理:

如java中那样,通过抛出和捕捉异常对象来管理错误处理过程.内存管理:由底层.

***框架进行自动内存垃圾**.

c#从c和c++继承的特点

编译:程序直接编译成标准的二进制可执行形式.但c#的源程序并不是被编译成二进制可执行形式,而是一中中间语言,类似于java字节码。

如果前面的hello world程序被保存成一个文本文件并被命名为hello.cs,它将被编译成命名hello.exe的可执行程序.

结构体:一个c#的结构体与c++的结构体是相似的,因为它能够包含数据申明和方法.但是,不象c++,c#结构体与类是不同的而且不支持继承.

但是,与java相同的是,一个结构体可以实现界面.

预编译:c#中存在预编译指令支持条件编译,警告,错误报告和编译行控制.可用的预编译指令有:

#define

#undef

#if#elif

#else

#endif

#warning

#error

#line

没有了#include 伪指令.你无法再用#define 语句对符号赋值,所以就不存在源**替换的概念--这些符号只能用在#if和#elif伪指令里.在#line伪指令里的数字(和可选的名字)能够修改行号还有#warning和#error输出结果的文件名.

操作符重载:一些操作符能够被重载,而另一些则不能.特别的是,没有一个赋值运算符能够被重载.能够被被重载的单目操作符是:

+ - ! ~ ++ -- true false

能够被重载的二元运算符是:

+ - * / % & | ^ << >> == != > < >= <=

c#独有的特点

c#最引人入胜的地方是它和java的不同,而不是相似的地方.这一节(和这个系列第二部分的大部分地方)讲述了c#实现的和java不同的地方或者java根本没有的特点.

中间**:微软在用户选择何时msil应该编译成机器码的时候是留了很大的余地.微软公司很小心的声称msil不是解释性的,而是被编译成了机器码.

它也明白许多--如果不是大多数的话--程序员认为java程序要不可避免的比c编写的任何东西都要慢.而这种实现方式决定了基于msil的程序(指的是用c#,visual basic,"managed c++"--c++的一个符合cls的版本--等语言编写的程序)将在性能上超过"解释性的"java**.当然,这一点还需要得到事实证明,因为c#和其他生成msil的编译器还没有发布.

但是java jit编译器的普遍存在使得java和c#在性能上相对相同.象"c#是编译语言而java是解释性的,"之类的声明只是商业技巧.java的中间**和msil都是中间的汇编形式的语言,它们在运行时或其它的时候被编译成机器**.

命名空间中的申明:当你创建一个程序的时候,你在一个命名空间里创建了一个或多个类.同在这个命名空间里(在类的外面)你还有可能声明界面,枚举类型和结构体.

必须使用using关键字来引用其他命名空间的内容.

基本的数据类型:c#拥有比c,c++或者java更广泛的数据类型.这些类型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.

象java一样,所有这些类型都有一个固定的大小.又象c和c++一样,每个数据类型都有有符号和无符号两种类型.与java相同的是,一个字符变量包含的是一个16位的unicode字符.

c#新的数据类型是decimal数据类型,对于货币数据,它能存放28位10进制数字.

两个基本类:一个名叫object的类是所有其他类的基类.而一个名叫string的类也象object一样是这个语言的一部分.

作为语言的一部分存在意味着编译器有可能使用它--无论何时你在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它.

参数传递:方法可以被声明接受可变数目的参数.缺省的参数传递方法是对基本数据类型进行值传递.

ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值.out关键字也能声明引用传递过程,与ref不同的地方是,它指明这个参数并不需要初始值.

与***的集成:c#对windows程序最大的卖点可能就是它与***的无缝集成了,***就是微软的win32组件技术.实际上,最终有可能在任何.

***语言里编写***客户和服务器端.c#编写的类可以子类化一个以存在的***组件;生成的类也能被作为一个***组件使用,然后又能使用,比方说,jscript语言子类化它从而得到第三个***组件.这种现象的结果是导致了一个运行环境的产生,在这个环境里的组件是网络服务,可用用任何.

***语言子类化.

C++中a的区别,C++中&a[0]与a[0] 的区别?

1楼 幻想秘境 a 0 是获取a这个数组第0个元素的值 a 0 是获取a这个数组第0个元素的地址 比如把数组比作一个小区 a 0 就是代表小区里某栋房子本身 而 a 0 则表示某栋房子的门牌号 你知道了门牌号 并且知道它在a小区 那么你就能找到这栋房子 望采纳 2楼 匿名用户 a 0 输出的是一个地...

细菌的荚膜有什么作用,细菌中荚膜有哪些作用?

1楼 宛如时光 主要有以下几点 保护作用 抗逆作用 抵御噬菌体的侵染 抵御宿主免疫系统等 贮藏养料 作为透性屏障和离子交换系统 表面附着作用 信息识别 堆积代谢废物 2楼 奚雅柔盘水 功能 抗吞噬作用 荚膜因其亲水性及其空间占位 屏障作用,可有效抵抗宿主吞噬细胞的吞噬作用。 粘附作用 荚膜多糖可使细...

C++中delete和delete的区别

1楼 du知道君 你是不是问 delete 和 delete 的区别 一个是释放单个物体 比如 class a a p new a 一个是释放物体数组 a p new a 50 delete a c 中delete和delete的区别 2楼 育知同创教育 delete or delete 问题没说清...