gpt4 book ai didi

actionscript-3 - "calling methods directly instead of through a reference"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 04:33:15 25 4
gpt4 key购买 nike

我刚刚经历了a slideshow from Grant Skinner关于提高 ActionScript 的性能。他给出的一个提示是“直接调用方法而不是通过引用”。我不太明白这是什么意思...

是否意味着避免对引用函数对象的变量进行函数调用?

var someObjectsDoSomethingMethod:Function = someObj.doSomething;
someObjectsDoSomethingMethod();

还是避免对引用另一个拥有该方法的对象的变量进行函数调用?
var someObject:Function = someObj;
someObject.doSomething();

或者 ...?

最佳答案

你走在正确的轨道上,他说,如果可能的话(特别是对于循环内的方法调用),最快的方法是根本不使用方法调用(参见幻灯片 51),但如果你必须尝试直接调用一种方法(幻灯片 52)。虽然这并不总是实际的或理想的,但根据调用方法的方式以及调用它的对象,会产生一些开销。

最大的收获是关闭非常昂贵。

例如:

WithAnonymousFunction.Go(function() { /* Do Work */ });  // Slow
WithReference.Go(new WorkerClass()); // Faster
WithAnonymousReference.Go((new WorkerClass()).doWork); // Faster
WithMethod.Go(); // Even faster!
WithInlinedMthod.Go() // Fastest!

public class WithAnonymousFunction {
public static function Go(func:Function):void {
func();
}
}

public class WorkerClass {
public doWork() { // Do Work }
}

public class WithAnonymousReference {
public static function Go(func:Function) {
func();
}
}

public class WithReference {
public static function Go(cls:WorkerClass) {
cls.doWork()
}
}

public class WithMethod {
public static function Go() {
doWork();
}

public static function doWork():void { // Do Work }
}

public class WithInlinedMethod {
public static function Go() {
// Do Work
}
}

我不确定的一件事是使用具体类与接口(interface)之间的性能差异。

关于actionscript-3 - "calling methods directly instead of through a reference"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7111154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com