Два куска кода:
| Код | using System;
namespace ConsoleApplication2 { public static class Ex { public static int Add(this int i, int j) { return i + j; }
public static int Sub(this int i, int j) { return i - j; } }
class Program { static void Main(string[] args) { int m = 0;
for (int i = 0; i < 10000; i++) { for (int j = 0; j < 10000; j++) { for (int k = 0; k < 5; k++) { m += (i - (j + k)); //m = m.Add(i.Sub(j.Add(k))); } } }
Console.WriteLine(m); Console.ReadLine(); } } }
|
| Код | using System;
namespace ConsoleApplication2 { public static class Ex { public static int Add(this int i, int j) { return i + j; }
public static int Sub(this int i, int j) { return i - j; } }
class Program { static void Main(string[] args) { int m = 0;
for (int i = 0; i < 10000; i++) { for (int j = 0; j < 10000; j++) { for (int k = 0; k < 5; k++) { //m += (i - (j + k)); m = m.Add(i.Sub(j.Add(k))); } } }
Console.WriteLine(m); Console.ReadLine(); } } }
|
Почему первый работает быстрее? Почему JIT-компилятор не инлайнит функции? Компилял в релизе под 2008 студией. |