说我有一个脚本多次访问一个函数,该函数属于另一个类,如下所示(夸大):
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。