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 можно взять тут.
Применений этому можно
придумать массу - например,
пере направлять
пользователей со слабыми
процессорами на более
другой урл или просто
отключать для них самые
навороченные графические
эффекты :)
<< назад | содержание | вперед >> |