class Program
{
static void Main(string[] args)
{
Func<int,int> twice = x => x * 2;
const int LOOP = 5000000; // 5M
var watch = Stopwatch.StartNew();
for (int i = 0; i < LOOP; i++)
{
twice.Invoke(3);
}
watch.Stop();
Console.WriteLine("Invoke: {0}ms", watch.ElapsedMilliseconds);
watch = Stopwatch.StartNew();
for (int i = 0; i < LOOP; i++)
{
twice.DynamicInvoke(3);
}
watch.Stop();
Console.WriteLine("DynamicInvoke: {0}ms", watch.ElapsedMilliseconds);
}
}
在我的电脑上:
上面代码的运行时间:
Invoke: 24ms
DynamicInvoke: 2214ms
当然,我同时也在工作,所以会有些影响。
除了时间的开销比较外,内存消耗也是一个问题。