观《深入理解C#》有感---List<T>对于ArrayList的优化提升

相对List<byte>为例,ArrayList如果想要存储byte,所要付出的代价如下(假定在32位CLR):

  1. byte装箱消耗:8字节(装箱后的对象头,通常8字节,包括同步块索引和类型指针)
  2. 存储数据消耗:4字节(1字节存储,3字节填充(内存对齐))
  3. 存储引用消耗:4字节

所以每个对象至少16字节,如果采用List<byte>则无此问题,它会用byte[]类型的成员数组代替ArrayList中的object[]


所以我们可以看到泛型带来惊喜的改变,不仅节省了内存,而且加快了执行速度,不需要花时间装箱,也不用对字节进行拆箱而检查类型,更不需要对不再引用的已装箱值进行垃圾回收。

本文作者:陈侠云

本文链接:https://www.cnblogs.com/chenxiayun/p/18296305

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   陈侠云  阅读(5)  评论(0编辑  收藏  举报
//雪花飘落效果
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起