我可以使用代理来缓存函数吗?

时间:2018-07-19 04:58:55

标签: c# unity3d delegates function-pointers unityscript

说我有一个脚本多次访问一个函数,该函数属于另一个类,如下所示(夸大):

void Update(){
       for (int i= 0; i< 10; i++){
            object1.object2.object3.Function();
    }
}

我替换为

delegate void MyDelegate();
MyDelegate myFunction;


    void Start(){
    myFunction =  object1.object2.object3.Function;
    }

    void Update(){
    for (int i= 0; i< 10; i++){
                this.myFunction();
        }
    }

这是否会对性能产生影响(甚至是很小的影响),因为我在取消引用这些对象时正在考虑高速缓存的命中和遗漏,还是我在理解代表及其用法时完全错了?

编辑: 因此,我对上面的代码做了一个小型基准测试,并使用了Diagnostics中的Stopwatch类来测量经过时间。是的,两者之间没有任何明显的区别。

我遍历了一个函数,该函数计算了一个浮点的平方根,为100000次,并测量了经过的时间,在两种情况下都达到6000ms。

0 个答案:

没有答案