最近在读CLR VIA C#这本著作。看了三分之一,已经有很多感慨了,在此记录一二。

CLR自2.0开始支持泛型(Generic),不仅提供了编译时类型安全的保证,更在很大程度上提升了运行时性能!首先和C++模版(Template)做个比较,前者编译时不展开而运行时(JIT)展开,后者编译时展开。前者在展开时会做一定的优化,比如针对所有的引用类型作为泛型参数,泛型只被JIT编译成一份本地代码(native code),而后者对每一种模版参数展开一次。这意味着C++的二进制(binary)文件会更大且运行时占据更多内存。顺便一提,Java的泛型行为和C++类似。然而,当泛型遇到值类型参数时,则针对每一种值类型展开成不同的本地代码,因为CLR的原生类型(premitive types)数据长度不一样,而且CLR对原生类型的汇编操作指令各不相同。而引用类型则一律当作指针来操作,其数据长度为32位(bit)或64位--根据操作系统不同。

泛型极大程度的改善了CLR的性能和稳定性,应极力用之。

转载于:https://www.cnblogs.com/stainboy/archive/2012/10/05/clr-generic.html

CLR Generic相关推荐

  1. CLR via C#(第3版):.net中的定时器整理总结

    这几天由于项目中设计到用定时器实时调用webserver获取数据,开始想到用线程,但是由于webservice返回太慢,上一个线程无法结束,下个线程无法开启.出现假死的情况.所以考虑使用定时器,这样每 ...

  2. 提高.net程序性能和稳定性-CLR Profile

    CLR Profile能够看到应用程序的内存堆栈情况并且能够查询垃圾回收机制的行为.利用CLR Profile可以确定你的代码哪儿分配了太多内存,从而导致垃圾回收机制的执行,哪些代码长时间的占有内存. ...

  3. sql server clr 集成系列之二 简单的sql 函数

    第一, 新建类库,引用命名空间,using Microsoft.SqlServer.Server; 第二, 编写一个公共类,含有一个公共的静态函数,并且具有特性:[Microsoft.SqlServe ...

  4. [CLR via C#]12. 泛型

    原文:[CLR via C#]12. 泛型 泛型(generic)是CLR和编程语言提供一种特殊机制,它支持另一种形式的代码重用,即"算法重用". 简单地说,开发人员先定义好一个算 ...

  5. .NET Framework、C#语言、IDE、CLR 版本历史及其差异(最新)

    1.版本整合: 2..NET Framework 版本差异 版本 发行的功能及其特点 1.0 First Version of CLR and Base Class Library(CLR的第一个版本 ...

  6. 《CLR Via C# 第3版》笔记之(十九) - 任务(Task)

    除了上篇中提到的线程池,本篇介绍一种新的实现异步操作的方法--任务(Task). 主要内容: 任务的介绍 任务的基本应用 子任务和任务工厂 任务调度器 并行任务Parallel 1. 任务的介绍 利用 ...

  7. 【泛型】Generic 参数化类型 类型转换

    参考: http://blog.csdn.net/lonelyroamer/article/details/7864531#comments http://blog.csdn.net/lonelyro ...

  8. CLR 完全介绍-反射之反思

    清晰的组件化目标是否因在库间共享过多类型信息而落空?或许您需要高效的强类型化数据存储,但如果每次对象模型发展后都需要更新您的数据库架构,那会耗费很大成本,所以您更愿意在运行时推断出其类型架构吗?您需要 ...

  9. CLR运行时细节 - Method Descriptor

    方法描述符:MethodDesc 运行时用来描述类型的托管方法,它保存在方法描述桶(MethodDescChunk)内; 方法描述符保存了方法在运行时的一些重要信息: 是否JIT编译; 是否有方法表槽 ...

最新文章

  1. matplotlib中文文档_python绘图库——Matplotlib及Seaborn使用(入门篇1)
  2. flexcan controller register
  3. (转)启动linux远程图形界面登录,vnc!!
  4. 聊聊flink的ConnectionManager
  5. php 常用简单函数,PHP中常用函数简单介绍
  6. Java小白零基础学习如何突破自己的方法
  7. 那些年删过的库,跑过的路,你从中找到解决方法了吗?
  8. java 文件压缩_java实现文件压缩
  9. 解决许可证兼容性问题,Ubuntu 内核将内置 ZFS
  10. 高通混频器配置文件如何选择
  11. 分立元器件——电感器
  12. 3D MAX插件大全介绍
  13. 老男孩python最新15期课程安排_老男孩Python完美实战课程 14期视频教程 28周Python视频教程 15-25周部分...
  14. 【Flutter核心类分析】深入理解BuildContext
  15. Apk脱壳圣战之---脱掉“爱加密”家的壳
  16. POI导出word文件中表格合并方法(行合并,列合并)
  17. 云业务贡献40.5%增长:亚马逊2022年财报亮点解读
  18. 机器学习——K近邻算法及乳腺癌检测分类
  19. fgo生日语音咋触发 日语语音识别
  20. IB课程与DSE课程体系对比

热门文章

  1. usr/sbin/inetd
  2. auto_ptr个人用
  3. U-Boot的常用命令详解
  4. hive 强转为string_String 源码浅析————终结篇
  5. SSM框架之Spring MVC(三)http响应、文件上传
  6. 常见的7种深度学习框架对比
  7. 思杰VDI外篇XDDC安装
  8. 开源引擎推荐—ElGameEngine 作者:trcj(http://blog.csdn.net/trcj1)
  9. .NET Core 3.0带来桌面支持(Windows Only)
  10. cocos2d-x 2.0版本 自适应屏幕分辨率 .