Сколько, по-вашему, займёт выполнение кусков кода (1) и (2)?
private static int Compare(int a, int b, Func<int, int, int> comparison)
{
return comparison(a, b);
}
[STAThread]
public static void Main(string[] args)
{
int repeatCount = 10 * 1000 * 1000;
IComparer<int> comparer = Comparer<int>.Default;
Measure("Callback", () => // (1)
{
for (int i = 0; i < repeatCount; i++)
{
Compare(i, 123, comparer.Compare);
}
});
Measure("Lambda callback", () => // (2)
{
for (int i = 0; i < repeatCount; i++)
{
Compare(i, 123, (a, b) => comparer.Compare(a, b));
}
});
Console.WriteLine();
Console.Write("Done. Press any key to exit...");
Console.ReadKey();
}
private static void Measure(string name, Action callback)
{
Stopwatch sw = Stopwatch.StartNew();
callback();
sw.Stop();
Console.WriteLine("{0,16}: {1,8 :#,##0.0###} ms", name, sw.ElapsedMilliseconds);
}
| Не подглядывать! |
| Callback: 3 190,0 ms
Lambda callback: 116,0 ms
Done. Press any key to exit...
|
| |
Чтобы сохранить хоть какую-то интригу, подожду ваших объяснений