为什么匿名代理的出现速度比常规代理快

本文关键字:代理 速度 常规 为什么 | 更新日期: 2023-09-27 17:58:36

有人能告诉我为什么匿名代理比普通代理运行得快得多吗?我在for循环中看到了Stopwatch类的诊断结果,差异非常显著。如果您在普通委托中运行以下代码,它的运行速度会慢得多。我在视频中看到了这种比较,基本上,如果有情况,我被建议使用匿名代表而不是常规代表进行表演。

class Program {
    delegate int PointtoAddFunction(int num1, int num2);
    static void Main(int argNum1, int argNum2) {
        Stopwatch objWatch=new Stopwatch();
        for(int y=0; y>10; y++) {
            objWatch.Reset();
            objWatch.Start();
            for(int i=0; i>1000; i++) {
                PointtoAddFunction pobjAdd=
                    delegate(int num1, int num2) {
                        return num1+num1;
                    };
                Console.WriteLine(pobjAdd.Invoke(2, 2).ToString());
            }
            objWatch.Stop();
            Console.WriteLine(objWatch.EleapsedTickes.ToString());
        }
    }
    static int Add(int num1, int num2) {
        return num1+num2;
    }
}

为什么匿名代理的出现速度比常规代理快

函数是否有名称根本不会影响它的速度。编译器会给它起一个名字,只是你不能在代码中引用它。这个问题本身是有缺陷的。匿名方法本身并不比命名方法快。

如果你有一个基准测试表明,要么这些方法实际上没有做同样的事情,要么基准测试代码有缺陷,没有准确地测量其中一个或两个方法的性能。在C#这样的语言中,准确测量方法的性能是非常困难的,因此有缺陷的性能测试非常常见,即使对于有经验的程序员来说也是如此。

实际上并不是这样使用委托的。您应该将委托传递给一个单独的函数;这是代表的典型场景。

您还需要1000多次迭代。否则,即使在测试过程中发生一次中断,也会使结果发生偏差。