测量在Flex中显示对象所花费的时间

时间:2010-05-03 12:13:47

标签: flex actionscript-3

例如

function showIt():void {
   something.visible = true;
}

function init():void {

  time1 = flash.utils.getTimer();
  showIt();
  time2 = flash.utils.getTimer();

}

<mx:st id="something" visible="false"/>
<mx:Button click="init()"/>

在上面的代码中,我想测量在屏幕上显示 st 所需的时间 是否足以计算 time2 - time1
或者我应该在渲染上放置事件处理程序?
或者其他一些方式?

4 个答案:

答案 0 :(得分:2)

您应该尝试Grant Skinner's AS3 Performance Test Harness

以下是一个简单的演示实例(来自他的博客):

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
performancetests.GraphicsTests (5 iterations)
Testing different approaches for drawing.                               
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
method...................................................ttl ms...avg ms
tare [3]                                                      2     0.40
drawPath                                                    242    48.40
drawPathShort                                               171    34.20
fullPath                                                    182    36.40
reference                                                   127    25.40
shortReference                                              129    25.80
withGraphics                                               1154   230.80
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

download中,他有一个名为“RenderTest.as”的类,他描述了这个类:

  

表示渲染测试,它计算将指定的DisplayObject绘制到BitmapData实例所需的时间。

我一直都在使用它,这很棒。

希望有所帮助, 兰斯

答案 1 :(得分:1)

你可以draw it into a BitmapData强制渲染并测量所需的时间。

格尔茨
back2dos

答案 2 :(得分:1)

使用Profiler可能会比较这些操作更有趣。

答案 3 :(得分:0)

time2 - time1只会为您提供将visible的{​​{1}}属性设置为UIComponent所需的时间 - 这可能只是几行代码。当true触发UIComponent事件时,实际呈现会定期发生。我不知道有任何方法来衡量渲染一个特定组件所需的时间,我认为你不能这样做。

想到的一个想法是听取enterFrame并计算两个连续事件之间的时间差(或甚至更好:取平均值超过100帧)以估算所需时间渲染整个舞台。现在从舞台上删除特定组件后重复实验。两个时间之间的差异将让您了解渲染组件所需的时间。