什么意思是“非内联提高代码质量,成为不常见的路径”

问题描述 投票:0回答:1

我正在查看.net core 3.0中List和LargeArrayBuilder类的源代码,并看到该方法AddWithBufferAllocation带有注释“非内联以提高代码质量,这是不常见的路径”。此外,方法的属性MethodImpl的值为MethodImplOptions.NoInlining。 noinlining如何提高代码质量?

我相信这会降低性能。我可能是错的,但是调用方法是物理调用方法(调用指令)并传递参数的开销。特别是,如果我们使用值类型。

sources

enter image description here

c# arrays
1个回答
0
投票

if测试为假,并且根本不进行方法调用时,在general情况下提高了性能。

这意味着AddRange,即可能使方法调用(但很少)要小,并且比同一个方法(其中所有AddWithBufferAllocation都可能内联在其中)可以得到更好的优化。

© www.soinside.com 2019 - 2024. All rights reserved.