观《深入理解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[]


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

posted @ 2024-07-11 15:17  陈侠云  阅读(13)  评论(0)    收藏  举报
//雪花飘落效果