Просмотр полной версии : Оценка производительности графической системы
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;
действительно не срабатывает :( )
И собссно так по поводу тру бэнча что ж кто поведает?
На указанном месте форума ничего внятного не обнаружено.
Кроме расчета ФПС. Хм.... Приятно конечно, но маловато...
По поводу вытаскивания параметров из ХМЛя - есть такой глюк, иногда после присваивания флеш сам меняет тип переменной со стринга на что-то другое (был даже случай, когда пытался посчитать значение - в стринге было что-то типа "100-50"), но если сразу объявить переменную с типом, то вроде как не должен такого делать.
Тайна работы clearInterval'а покрыта мраком %), наверняка нужный интервал убьется той же функцией, которую setInterval вызвал, но если пытаться, например, другим интервалом убить первый - тогда уже как повезет %) Кроме того, интервал не очень точно работает (в глобальной перспективе) т.е. после 1000 вызовов реальное время на них потраченное может сильно отличаться от планируемого.
А причин, по которым может "тормозить" просто очень много... Начиная от устаревшей версии директ-Х и заканчивая установленным в эксплорере каким-нибудь гугл-тулбаром...
Я бы наверное пробовал тестить как-нибудь на основе использования BitmapData.setPixel/BitmapData.getPixel...
Проблема в том, что на разных платформах, версиях плеера и разном разрешении экрана и глубине цвета производительность будет разной.
В общем, для теста нужно нарисовать чета большое на экране, подвигать это, посмотреть фпс и переменные среды. Ну и тест на вычисления лучше побольше операторов включить.
sweetlove
04.12.2007, 22:45
Агаааа!!!
Тогда собссно в студию: что там больше всего жрет ресурсов у флэша при рисовании и вычислениях?
Рисование - я думаю кружочек с блюром полазющий по таким же... хм?
Вычисления.... тригонометрия? Корни? Логарифмы? :)
>BitmapData.setPixel/BitmapData.getPixel...
амммм.... в хэлпе - нот фаунд ор нот_экзист! 8-()
Флеш у меня - 8-Рго.... хм?
sweetlove, если вы не состоянии сразу продумать, что хотите написать, то воспользуйтесь кнопкой http://www.flasher.ru/forum/images/russian/style3/buttons/edit.gif, а не плодить сообщения одно за другим.
Ваще не надо изобретать велосипед (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/)
http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001967.html
это setPixel, вторая ф-ция аналогично, там же описана... да и в хелпе должна быть... Флеш 8 вполне должен ее узнавать =)
Почему именно это, а не что-то другое:
Потому что работает непосредственно с изображением. Т.е. никаких вычислений, просто время вывода на экран\время считывания.
Но, опять же, тестить можно много разных вещей, и чтобы понять где же "узкое место" одним тестом не обойтись. Флеш ведь не работает напрямую с девайсами...
Вопрос скорее такой, а что вы хотите в конечном счете замерять?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.