观《深入理解C#》有感---List<T>对于ArrayList的优化提升
相对List<byte>为例,ArrayList如果想要存储byte,所要付出的代价如下(假定在32位CLR):
- byte装箱消耗:8字节(装箱后的对象头,通常8字节,包括同步块索引和类型指针)
- 存储数据消耗:4字节(1字节存储,3字节填充(内存对齐))
- 存储引用消耗:4字节
所以每个对象至少16字节,如果采用List<byte>则无此问题,它会用byte[]类型的成员数组代替ArrayList中的object[]
所以我们可以看到泛型带来惊喜的改变,不仅节省了内存,而且加快了执行速度,不需要花时间装箱,也不用对字节进行拆箱而检查类型,更不需要对不再引用的已装箱值进行垃圾回收。
本文作者:陈侠云
本文链接:https://www.cnblogs.com/chenxiayun/p/18296305
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步