【发布时间】:2012-03-22 05:43:50
【问题描述】:
装箱和拆箱对性能的影响相同吗?还是说拆箱更快?
(如果有,能否简要说明主要原因。)
谢谢
【问题讨论】:
-
我没有确凿的事实,但我希望拆箱会更快一些。当您对值类型进行装箱时,必须创建一个新对象,并且必须将值复制到新对象中。拆箱时,只需从装箱实例中复制值。所以装箱增加了一个对象的创建。但是,这在 .NET 中非常快,因此差异可能不是很大。如果您需要最大速度,请尽量避免整个拳击过程。请记住,装箱会创建需要由垃圾收集器清理的对象。
-
我会等待有更具体知识的人来写一个实际的答案,但拆箱不涉及内存分配,所以它应该有相当少的开销,两者立即和长期的垃圾收集器。
-
(续):最后(作为更一般的提示):如果您想要确凿的事实,请始终针对您的特定用例进行自己的测量。识别真正的热点,不要过早地尝试优化。
-
为什么重要?您是否打算在程序中对值进行装箱但从不拆箱?