Измерение времени, необходимого для отображения объекта в Flex - PullRequest
0 голосов
/ 03 мая 2010

Например,

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 на экране.
Достаточно ли вычислить время2 - время1 ?
Или я должен поставить обработчик событий на render ?
Или как-то иначе?

Ответы [ 4 ]

2 голосов
/ 03 мая 2010

Вам следует попробовать Испытательный комплект Grant Skinner AS3 Performance Test .

Вот простая демонстрация этого в действии (из его блога):

––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
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
––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

В загрузке у него есть класс "RenderTest.as", который он описывает с помощью:

Представляет тест рендеринга, который показывает, сколько времени занимает рисование указанного объекта DisplayObject в экземпляре BitmapData.

Я все время пользуюсь, это здорово.

Надеюсь, это поможет, Lance

1 голос
/ 03 мая 2010

вы можете нарисовать его в BitmapData , чтобы вызвать рендеринг и измерить требуемое время.

Greetz
back2dos

1 голос
/ 03 мая 2010

Использование Profiler, вероятно, будет более интересным для сравнения таких операций.

0 голосов
/ 03 мая 2010

time2 - time1 просто даст вам время, необходимое для установки свойства visible UIComponent на true - это может быть всего пара строк кода. Реальный рендеринг происходит через равные промежутки времени, когда событие UIComponent вызывает enterFrame. Я не знаю ни одного метода для измерения времени, необходимого для визуализации одного конкретного компонента, и я не думаю, что вы можете сделать это.

Одна идея, которая приходит в голову, - это прослушать ENTER_FRAME и рассчитать разницу во времени между двумя последовательными событиями (или даже лучше: взять среднее значение, скажем, за 100 кадров), чтобы получить оценку времени, затрачиваемого на рендеринг Вся сцена. Теперь повторите эксперимент после удаления конкретного компонента со стадии. Разница между этими двумя временами даст вам представление о времени, затраченном на визуализацию вашего компонента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...