《CLR.via.C#第三版》第一部分读书笔记(一)

     最近开始仔细研读《CLR.via.C#第三版》这本书。读pdf文档确实很累。建议有条件的朋友还是买书看吧。

     我的笔记用来记录我对这本书的理解,简化下逻辑,对每个部分我觉得是要点的进行归纳总结。特别基础的东西不会做过多的阐述。

     第一部分讲的是CLR基础。

     首先还是重新说下CLR的概念:“CLR 是一个可由多种编程语言使用的“运行时”。可用任何编程语言来开发代码,只要编译器是面向CLR的就可以了”。这里要重新解释下“只要编译器是面向CLR的就可以了”这句话。初学者一般不认同.net平台跨语言,或者说所谓的“跨语言”是在微软推出的范围内的语言。这个认识其实是错误的。任何语言都可以面向CLR来创建自己的编译器。我们熟知的Iron Ruby、Perl、PHP都有面向CLR的编译器。图1-1展示了编译源代码文件的过程。

      《CLR.via.C#第三版》第一部分读书笔记(一)

      比较重要的认知是CLR实际不和托管模块一起工作,而是和程序集一起工作。程序集包含了托管模块和资源文件等其它文件。

      IL(中间语言)可以使用汇编语言来写。CLR中的JIT(just in time)也叫即时编译器,里面有个函数JITComplier(),此函数的职责是把要执行的方法的IL转换成本地CPU指令。

      类中方法的调用过程:

      一个方法执行的时候总的来说会被调用两次。(这里暂定方法名为Test())

      第一次调用:

      JITCompiler()会把Test()方法的IL代码编译成本地CPU指令(此指令会被保存到一个动态分配的内存块中),Test()方法在内存块中会通过JITComplier执行一遍(包括查找方法的IL,验证方法的IL,编译,执行)。

      第二次调用:

      完全跳过JITCompiler(),Test()方法在内存中再执行一遍。

      两次执行的过程如图1-4,1-5所示:

      《CLR.via.C#第三版》第一部分读书笔记(一)

     《CLR.via.C#第三版》第一部分读书笔记(一)

     需要注意的是本地CPU指令是存储到动态内存中的,一旦程序终止,本地CPU指令将会被丢弃。

     Debug版本和Release版本的区别本质上是IL代码质量和JIT本地代码质量是否经过优化。从性能上考虑,程序部署、发布,最好是用Release版本。

     这个部分还有程序打包、部署、程序集信息等内容。这里就不阐述了。

《CLR.via.C#第三版》第一部分读书笔记(一)

上一篇:如何在windows下安装GIT


下一篇:C# 好书一本推荐