Магазин портативной техники "Портатив"
:: на главную
Flash > Неожиданные применения Flash

4. Определяем быстродействие компьютера в он-лайн.
Итак, давайте посмотрим, что еще можно применить для наших антинаучных экспериментов из богатого (только на первый взгляд, к сожалению...) ассортимента действий Flash4. Get URL- старо, If Frame Is Loaded - слишком скучно, Load Movie - уже было... Ага ! Вот что мне нравится из Actions, это
GetTimer ! Интересная штукенция :) Давайте попробуем приспособить ее к какому-нибудь общественно-полезному делу.
Вы когда-нибудь замечали что некоторые .swf ролики подтормаживают ? Да, иногда сидя за PIII-600 забываешь, что есть компьютеры слегка помедленнее :) А что есть тормоза при воспроизведении .swf ? Это просто процесс происходящий с компьютером, который не может выполнить заданную в ролике последовательность действий с заданной в этом же ролике частотой кадров. А от чего зависят тормоза ? Правильно - тормоза однозначно зависят от производительности компьютера пользователя и от числа свободных ресурсов на этом компьютере. Если бы можно было оценить тормоза в цифрах, по этим цифрам можно было бы судить о производительности системы. Использование GetTimer дает нам уникальную возможность в цифрах оценить тормоза компьютера посетителя вашей флэшовой странички.
Итак, задача упрощается. Для определения быстродействия компьютера необходимо взять таймер (например, в первом пустом кадре сделать Set Variable: "time1" = GetTimer ), потом загрузить процессор так, чтобы даже PIII-600 немного призадумался, потом в еще одном пустом ключевом кадре сделать Set Variable: "time2" = GetTimer. В результате разница time2 - time1 будет практически линейно зависеть от частоты процессора (конечно не загруженного в этот момент другими непосильными задачами :)
Как показывает мировая практика, наилучшим способом затормозить процессор является действие Duplicate Movie Clip. Попробуем использовать для этого что-то очень похожее на исходник про звездное небо (со странички с исходниками :). Создадим Символ вида Movie Clip содержащий маленькую белую точку и поместим этот символ в основную сцену с присвоением ему Instance Name "star". Далее, в первом кадре берем таймер, во втором что-то вроде

Set Variable: "number" = 1
Loop While (number <=  5000)
	  Duplicate Movie Clip ("/star", "zvezda" & number, number)
	  Set Property ("zvezda" & number, Visibility) = 0
	  Set Variable: "number" = number +1
End Loop

В третьем кадре похожим циклом уничтожаем все эти 5000 точек и, наконец, в четвертом снова берем таймер и вычисляем разницу. Кстати цифра 5000 взята абсолютно с потолка - попробуйте поэкспериментировать сами :)
Один из самых первых моих опытов по определению быстродействия лежит вот тут, а вы попробуйте придумать что-нибудь сами (так получится намного интереснее :) Пока я встречал еще только одну попытку вычислять быстродействие. Очень интересный подход к этой задаче продемонстрировал некто c y b e t* . Архив с его 3dflash bench можно взять тут. Применений этому можно придумать массу - например, пере направлять пользователей со слабыми процессорами на более другой урл или просто отключать для них самые навороченные графические эффекты :)


<< назад содержание вперед >>