AS3:使用null参数调用事件函数的性能问题

时间:2010-05-07 08:28:49

标签: flash actionscript-3 performance

最近我需要调用一个没有像这样的实际监听器的监听器函数:

foo(null);

private function foo(event:Event):void
{
   //do something
}

所以我想知道这与使用以下内容之间的性能是否存在显着差异,我可以在没有监听器的情况下阻止调用函数的null,但我仍然可以使用监听器调用它:

foo();

private function foo(event:Event = null):void
{
}

我不确定它只是一个风格问题,或者实际上是不好的练习,我应该写两个类似的函数,一个有一个没有事件参数(对我来说这看起来很麻烦)。

期待您的意见,thx。

2 个答案:

答案 0 :(得分:2)

正如bitc所说,没有区别。请注意,这只是严格类型调用的情况,编译器可以在编译时确定默认参数,并实际包含默认值作为参数。

当调用是无类型的时,播放器必须在运行时查找默认参数,这会花费一些速度,但可能不应该太多,与需要在其中执行的所有运行时类型检查/强制转换相比。一个案例。

然而,这不是一个好习惯。你应该把它分成两个功能。一,接收事件并从中提取必要的数据,然后将其传递给另一个实际处理它的函数。该函数中的实际逻辑变得更加可重用。因为您可以简单地移动函数(如在pull up中)而不会破坏代码,因此重构变得更容易。最后但并非最不重要的是,它明确区分了责任。

当然,如果无论对事件的实际回应是什么,既不是处理事件也不是太复杂,而不是分裂是有点夸大的。

格尔茨
back2dos

答案 1 :(得分:0)

这两个编译为完全相同的字节码。我已经检查了二进制差异。