极速理解设计模式系列
当前标签: 极速理解设计模式系列
极速理解设计模式系列:19.备忘录模式(Memento Pattern)
极速理解设计模式系列【目录索引】
极速理解设计模式系列:18.访问者模式(Visitor Pattern)
极速理解设计模式系列:16.迭代器模式(Iterator Pattern)
极速理解设计模式系列:15.中介者模式(Mediator Pattern)
极速理解设计模式系列:14.轻量级模式(Flyweight Pattern)
极速理解设计模式系列:13.外观模式(Facade Pattern)
极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
极速理解设计模式系列:11.单例模式(Singleton Pattern)
极速理解设计模式系列:10.抽象工厂模式(Abstract Factory Pattern)
极速理解设计模式系列:9.工厂方法模式(Factory Method Pattern)
极速理解设计模式系列:8.策略模式(Strategy Pattern)
极速理解设计模式系列:7.桥接模式(Bridge Pattern)
极速理解设计模式系列:6.适配器模式(Adapter Pattern)
极速理解设计模式系列:5.组合模式(Composite Pattern)
极速理解设计模式系列:4.原型模式(Prototype Pattern)
极速理解设计模式系列:2.观察者模式(Observer Pattern)
极速理解设计模式系列:1.建造者模式(Builder Pattern)
CIL是将.NET代码转化为机器语言的一个中间过程。它是一种介于高级语言和基于Intel的汇编语言的伪汇编语言。当用户编译一个.NET程序时,编译器将源代码翻译成通用中间语言 (CIL),它是一组可以有效地转换为本机代码且独立于CPU的指令。 本系列将从浅到深的分析CIL,通过分析它以优化.NET的运行效率,在实际编码的过程中尽量选择更加优化的编码方式。
由浅入深CIL系列:6.For和Foreach的CIL结构组成以及运行效率
摘要: 本节即将新接触的CIL操作符如下: br.s IL_003c 无条件地将控制转移到目标指令(短格式) clt 从计算堆栈的顶部弹出当前值并将其存储到索引 2 处的局部变量列表中 ldloca.s CS$5$0001 将位于特定索引处的局部变量的地址加载到计算堆栈上(短格式) leave.s 退出受保护的代码区域,无条件将控制转移到目标指令(缩写形式) constrained. 约束要对其进行虚方法调用的类型 endfinally 将控制从异常块的 fault 或 finally 子句转移回公共语言结构 (CLI) 异常处理程序 阅读全文
posted @ 2011-07-07 12:22 程兴亮 阅读(1041) | 评论 (2) 编辑
由浅入深CIL系列:5.抛砖引玉:判断string是否为空的四种方法的CIL代码看看效率如何?
摘要: 本节将接触几个新的CIL操作码如下 ldc.i4.0 将整数值 0 作为 int32 推送到计算堆栈上 Ceq 比较两个值。如果这两个值相等,则将整数值 1 (int32) 推送到计算堆栈上;否则,将 0 (int32) 推送到计算堆栈上。 Brtrue.s 如果 value 为 true、非空或非零,则将控制转移到目标指令(短格式)。 Brfalse.S 如果 value 为 false、空引用或零,则将控制转移到目标指令。 Callvirt 对对象调用后期绑定方法,并且将返回值推送到计算堆栈上。 Ldsfld 将静态字段的值推送到计算 阅读全文
posted @ 2011-07-04 11:17 程兴亮 阅读(1495) | 评论 (11) 编辑
由浅入深CIL系列:4.抛砖引玉:使用CIL来分析string类型在.NET运算中的性能和避免装箱
摘要: 一、在.NET中string是一种特殊的引用类型,它一旦被赋值在堆上的地址即不可改变,之后对其进行的字符串相加等操作之后的结果都指向另外一个堆地址,而非原来的字符串地址。现在我们看以下一段C#代码以观察string在实际编码过程中的使用。二、上面的C#生成的CIL代码如下,三、首先我们看两种字符串的构造方式的不同而引起的效能变化。结论:通过上面两种方式构造方式的CIL我们可以很清晰的看出第二种方式的效率要高于第一种的字符串构造方式。所以我们在实际的编码过程中可以考虑尽量使用第二种编码方式。四、大家都知道装箱操作会在堆上寻找一个控件来存储值类型的值。会耗费大量的时间。所以下面我们来看两个实例代码 阅读全文
posted @ 2011-06-30 11:25 程兴亮 阅读(1367) | 评论 (25) 编辑
由浅入深CIL系列:3.通过CIL观察.NET值类型和引用类型的内存分配
摘要: 一、在.NET中,内存分配是非常重要的一大块,为了更深入的了解其分配情况,本节中我们将利用一个实例来查看其CIL语言分析内存的分配情况。下面我们首先来看实例C#源码如,二、接下来我们看这段程序的CIL代码,通过这段代码我们大概能够猜出分别代表了什么意思。 首先我们看第一段CIL代码所示,声明了程序的进入点,以及定义了5个局部的变量其索引值分别为0,1,2,3,4,变量名为a,b,c,d,e。其次我们来看第二段CIL代码,这是值类型的直接存储在栈中的数据,直接取出相加即可。 阅读全文
posted @ 2011-06-29 11:28 程兴亮 阅读(1309) | 评论 (11) 编辑
由浅入深CIL系列:2.CIL的基本构成+CIL操作码速记表+CIL操作码大全速查
摘要: 一、CIL的基本构成 CIL由CIL指令(directive)、CIL特性(attribute)、CIL操作码(opcode)组成。CIL指令是用于描述.NET程序集总体结构的标记,并且通知CIL编译器如何定义在程序集中用到的命名空间、类、成员的。它以(.)一个点号开头,例如:.namespace、.class、.property、.method等构成。CIL特性是由于CIL指令并不能完全说明.NET成员和类的情况下,针对CIL指令进行补充说明成员或者类的特性的。比如一个类可能是公共的,集成的。它就需要用public特性、extends特性或者implements特性对类的.class指令进行修饰的补充说明。 阅读全文
posted @ 2011-06-28 10:48 程兴亮 阅读(1408) | 评论 (7) 编辑
由浅入深CIL系列:1.初步认识CIL通用中间语言
摘要: CIL简介:CIL(Common Intermediate Language)中文名为通用中间语言,注意它曾经被称为微软中间语言或MSIL,它是一种类似于JAVA字节码的语言。在微软语言平台中,不管程序员使用C#、VB.NET或者J#等语言编写的程序进行编译的时候,编译器将这几种语言编写的源代码编译为CIL(微软中间语言)语言,此时再通过JIL(Just In Time实时编译器)编译为针对各种不同CPU的指令(注意因为是实时的编译器,所以它运行的时候是只运行需要编译的CIL语言段,而不是全部一下编译完,这是为了提高效率。) 阅读全文
posted @ 2011-06-27 10:16 程兴亮 阅读(1317) | 评论 (8) 编辑
.Net Remoting
据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(3)
posted @ 2010-06-22 01:58 程兴亮 阅读(121) | 评论 (0) 编辑
webService
webService
Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
posted @ 2011-03-09 15:33 程兴亮 阅读(1579) | 评论 (6) 编辑
Silverlight实用窍门系列:21.循环访问WebService方法来看Silverlight下WebService异步请求【附带源码实例】
posted @ 2011-03-08 15:37 程兴亮 阅读(1227) | 评论 (2) 编辑
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息