冗余转换会影响性能吗?

本文关键字:性能 影响 转换 冗余 | 更新日期: 2023-09-27 18:35:29

我知道装箱/拆箱会影响性能。根据MSDN的说法,拆箱所需的时间可能是分配的四倍。我们的代码中有许多行具有"冗余"强制转换。实际上并不需要它们,没有它们的代码可以很好地编译。可能它不会损害性能,因为编译器看到不需要做拆箱,但也许不是!也许当我们显式转换它们时,编译器将被迫进行不必要的拆箱。我想知道这种类型的"冗余铸造"是否也会像拆箱或nop一样影响性能?

冗余转换会影响性能吗?

编译器会省略真正冗余的强制转换,例如 (int)0(object)null。由于无论是否使用强制转换表达式,生成的 IL 都完全相同,因此不会降低性能。显式强制转换也是如此,无论如何都会执行拳击转换:

object value = 0;
object value = (object)0; // exactly the same