2009/02/26(木)実験 - デリゲートの渡し方
匿名メソッドの速度とか、どう渡すのが一番速いのかなー。
ちょっと気になったので。(1)~(4)で一番速いのはどーれだ。
class Test
{
class A { public int a; }
class B : A { }
void DeA(A obj) { obj.a++; }
void DeB(B obj) { obj.a++; }
void DoB(Action<B> act) { act(obj); }
DoSomething()
{
DoB(DeA); // (1)
DoB(DeB); // (2)
DoB(delegate(B obj) { obj.a++; }); // (3)
{ // (4)
Action<A> act = delegate(A obj) { obj.a++; });
DoB(new Action<B>(act));
}
}
}
それぞれ1000万回の実行時間を計った。
その結果
(1) 1071ms
(2) 1036ms
(3) 260ms
(4) 1041ms
匿名メソッドは匿名メソッドのまま使ったら最強ね!
もっと他に気にすべきところがあるだろーに……。