gpt4 book ai didi

.net - 装箱和拆箱是否有相同的性能影响?

转载 作者:行者123 更新时间:2023-12-04 06:07:23 24 4
gpt4 key购买 nike

装箱和拆箱是否有相同的性能影响?还是说装箱更快?

(如果是,您能否简要解释主要原因)。

谢谢

最佳答案

这部分取决于您所说的“取消装箱”。用IL来说,拆箱实际上比C#少。在C#中,“拆箱”始终涉及将值复制到某处,而在IL中,这仅意味着检查框的类型并以这种方式使值可用。

但是它们具有不同的性能特征:装箱需要分配一个新对象,而无需进行类型检查。

在IL级别取消装箱实际上只需要检查您要取消装箱的对象确实是同一类型(或兼容的装箱值)的装箱值。然后,您需要在拆箱的C#版本中添加值复制操作。

我希望从长远来看,分配会比类型检查更昂贵,尤其是因为不仅要分配前期的成本,而且以后还会有相应的垃圾回收。

与往常一样,您应该在实际代码的上下文中评估操作的性能成本。我不认为装箱和拆箱的成本在大多数现代.NET应用程序中都不会很高,在这些应用程序中,泛型可以使您避免将它们用于集合等。

关于.net - 装箱和拆箱是否有相同的性能影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com