public class Bench92 { public int[] _x = null; [GlobalSetup] public void Setup() { _x = new int[10000]; } [Benchmark(Baseline = true)] [MethodImpl(MethodImplOptions.NoInlining)] [Arguments(0)] public int A(int z) { var x = _x; try { _ = 1; } catch { } for (int i = 0; i < x.Length; i++) { x[i] += i + z; z += x[i]; } return z; } [Benchmark()] [MethodImpl(MethodImplOptions.NoInlining)] [Arguments(0)] public int B(int z) { var x = _x; try { _ = 1; } catch { } var y = x; var zz = z; for (int i = 0; i < y.Length; i++) { y[i] += i + zz; zz += y[i]; } return zz; } }