(MemoryDiagnoser)
    public class MethodPerformanceBenchmark
    {
        int() integerArray = { 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 };
        int NumberOfItems = 1000;
        (Benchmark)
        public void NonAggressive_InliningDemo()
        {
            for (int i = 0; i 

Para executar o benchmark, execute a seguinte instrução no prompt de comando do Visual Studio.


dotnet run -p Method_Impl_Example.csproj -c Release

A Figura 1 abaixo mostra os resultados.

Figura 1: Os benefícios de desempenho de um método em C# podem ser substanciais.

Fundição

Como você pode ver, o desempenho da execução do método que foi inlinado é quase três vezes melhor que o método não enlatado.

Takeaways

Deve -se notar que usando o (MethodImpl(MethodImplOptions.AggressiveInlining)) O atributo em um método não garante o envolvimento do método. Ao usar esse atributo, você está especificando apenas para o compilador JIT que, se possível, o método deve ser inlinado. Em outras palavras, o atributo é apenas uma sugestão, não uma instrução. Por fim, o compilador JIT decidirá se o método será inlinado ou não.