PDA

Просмотр полной версии : Оценка производительности графической системы


sweetlove
04.12.2007, 19:03
Собссно возникла потребность сделать некий измеритель скорости работы флэш-графики на отдельно взятой машине.
Ибо у пользователей творятся какие-то странные глюки и отчего это происходит не понятно.

Итак, вопрос: как сделать benchmark на флэше?

Рекомендованное решение (код ниже) выдает 0 или 1.
Увеличил индекс до 100000 - ну стало 30 или 31. На др. компах та же фигня. То есть дисперсии пармтеров явной (а компы ооочень разные) не наблюдается. Видимо тут еще надо на экране что-то этакое вырисовывать, чтобы графическая система напрягалась?
Есть ли уже готовые решения (коды) и собссно хоть какая-то статистика по использованию этого тэста на разных системах?

Object.prototype.CPUx = function()
{
var x = getTimer();
for(var n=0; n<1000 ; n++){ n+=1 }
return getTimer()-x;
}
trace (CPUx());

CrazyFlasher
04.12.2007, 19:13
глюки могут происходить при работе с интервалами...советую проверить, т.к. сам однажды столкнулся

Fernando Costa
04.12.2007, 19:13
вот тут можно поковыряться http://flasher.ru/forum/search.php?searchid=888618

sweetlove
04.12.2007, 19:16
С интервалами глюки уже победил. Есть мысль, что просто еще что-то не успевает отрабатывать на компе.

CrazyFlasher
04.12.2007, 19:51
вообще если идёт работа исключительно графики и анимации, то такие вещи типа getTimer(), setInterval, setTimeout лучше не юзать (имхо). Заменить всё на onEnterFrame...особенно когда в презентации идёт переход от кадра к кадру...один может не проиграться и начать другой..и всё запорется

sweetlove
04.12.2007, 20:19
Ммм... дык игрушка. Юзера отдали приказы на выстрелы и таймер каждые 10 сек проверяет на серваке файл-статус. Когда все игроки отдали свои команды, статус становится == 1 и флэшка пашет себе далее.
Как реализовать 10-секундное ожидание на одном месте, в одном фрэйме? :)))

Кста - что за бэнц. clearInterval в произвольном порядке то гасит таймер, то нет. Вот как это можно интерпретировать с т.з. банальной эрудиции?

Кста, неоднократно в исходниках видела такую конструкцию:

A = node[i-1].childNodes[0].firstChild.nodeValue;
_root.A = A;

Причем
_root.A = node[i-1].childNodes[0].firstChild.nodeValue;
действительно не срабатывает :( )

И собссно так по поводу тру бэнча что ж кто поведает?
На указанном месте форума ничего внятного не обнаружено.
Кроме расчета ФПС. Хм.... Приятно конечно, но маловато...

wvxvw
04.12.2007, 21:57
По поводу вытаскивания параметров из ХМЛя - есть такой глюк, иногда после присваивания флеш сам меняет тип переменной со стринга на что-то другое (был даже случай, когда пытался посчитать значение - в стринге было что-то типа "100-50"), но если сразу объявить переменную с типом, то вроде как не должен такого делать.

Тайна работы clearInterval'а покрыта мраком %), наверняка нужный интервал убьется той же функцией, которую setInterval вызвал, но если пытаться, например, другим интервалом убить первый - тогда уже как повезет %) Кроме того, интервал не очень точно работает (в глобальной перспективе) т.е. после 1000 вызовов реальное время на них потраченное может сильно отличаться от планируемого.

А причин, по которым может "тормозить" просто очень много... Начиная от устаревшей версии директ-Х и заканчивая установленным в эксплорере каким-нибудь гугл-тулбаром...
Я бы наверное пробовал тестить как-нибудь на основе использования BitmapData.setPixel/BitmapData.getPixel...

aksios
04.12.2007, 22:03
Проблема в том, что на разных платформах, версиях плеера и разном разрешении экрана и глубине цвета производительность будет разной.
В общем, для теста нужно нарисовать чета большое на экране, подвигать это, посмотреть фпс и переменные среды. Ну и тест на вычисления лучше побольше операторов включить.

sweetlove
04.12.2007, 22:45
Агаааа!!!
Тогда собссно в студию: что там больше всего жрет ресурсов у флэша при рисовании и вычислениях?

Рисование - я думаю кружочек с блюром полазющий по таким же... хм?
Вычисления.... тригонометрия? Корни? Логарифмы? :)

>BitmapData.setPixel/BitmapData.getPixel...

амммм.... в хэлпе - нот фаунд ор нот_экзист! 8-()
Флеш у меня - 8-Рго.... хм?

iNils
04.12.2007, 22:54
sweetlove, если вы не состоянии сразу продумать, что хотите написать, то воспользуйтесь кнопкой http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif, а не плодить сообщения одно за другим.

aksios
04.12.2007, 23:17
Ваще не надо изобретать велосипед (http://search.msn.com/results.aspx?q=test+fps+flash&go=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&form=QBRE)
Например: этот тестик (http://blog.noventaynueve.com/2006/09/24/benchmarking-flash-9/)

wvxvw
05.12.2007, 03:26
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001967.html
это setPixel, вторая ф-ция аналогично, там же описана... да и в хелпе должна быть... Флеш 8 вполне должен ее узнавать =)
Почему именно это, а не что-то другое:
Потому что работает непосредственно с изображением. Т.е. никаких вычислений, просто время вывода на экран\время считывания.
Но, опять же, тестить можно много разных вещей, и чтобы понять где же "узкое место" одним тестом не обойтись. Флеш ведь не работает напрямую с девайсами...
Вопрос скорее такой, а что вы хотите в конечном счете замерять?