炫意html5
最早CSS3和HTML5移动技术网站之一

C# 这段代码的使用匿名函数为什么比使用已经定义的函数速度快啊

我写了段代码,大意是一个函数CCC需要传入一个委托action并在其内部执行,在AAA我是直接写了个匿名函数,在BBB则是传入一个符合委托规范的DDD函数,大概是这样的
static int len = 1024 * 1024;
static void AAA() {
Stopwatch sw = new Stopwatch();
sw.Start();
int a = 0;
for (int i = 0; i < len; i++) {
a += CCC(() => {
return 1;
});
}
Console.WriteLine(sw.ElapsedTicks);
}
static void BBB() {
Stopwatch sw = new Stopwatch();
sw.Start();
int a = 0;
for (int i = 0; i < len; i++) {
a += CCC(DDD);
}
Console.WriteLine(sw.ElapsedTicks);
}
static int CCC(Func<int> action) {
return action();
}
static int DDD() {
return 1;
}

然后经过多次测试,发现AAA的执行速度明显比BBB快,平均AAA比BBB快了一倍左右,这我就很奇怪了,BBB传入的是现成的DDD函数,执行的时候只是来回折腾一个已有的引用,而AAA每次都要临时创建一个匿名函数,明显应该比BBB处理的事情更多啊,但是测试结果AAA就是比BBB快,有没有大佬帮忙看下是我哪里理解错了啊,指点下小弟

回答

太晚了,懒得测试,只说一点,你传ddd进去依然要创建委托实例的,他不是现成的函数。至于效率我没有研究过,不清楚

炫意HTML5 » C# 这段代码的使用匿名函数为什么比使用已经定义的函数速度快啊

Java基础教程Android基础教程