Сравнительный тест производительности ActionScript3 vs ActionScript2 (Flash)
Доброго времени суток форумчане, возможно я плохо искал, но я не нашел сравнительных тестов производительности двух языков, а именно ActionScript3 и ActionScript2. А я точно знаю что они должны быть. Тем не менее навряд бы они меня удоволитворили, так как меня интересует в основном только одна функция, а именно нахождение столкновений точки и обьекта. Хочется добавить в игру много юнитов которые взаимодействуют с окружающим миром, а фпс падает? Знакомо? И мы начинаем оптимизировать код или искать более продуктивную среду или язык программирования. Недавно и мое творчество ограничилось продуктивностью среды разработки. Я давно знал что AS2 старье, но все же за простоту и удобство я его любил - пиши где хочешь, переменных не объявляй и т.д. И вот я решился перейти на AS3 и меня заинтересовал вопрос, а на сколько увеличится производительность? - Проверим.
Для теста я сделал два файла в которых аналогичные элементы и код, только один на AS2 а второй на AS3. На сцене у нас находятся два мувика a1, a2 и компонент label с именем l1.
Что мы делаем с помощью этого кода? -постепенно увеличиваем размер цикла, и когда фпс падает меньше 20 - выдаем размер цикла. И немного параметров из файла: размеры 550*400, фпс 120. Тестировалось на 9 флэш плеере. Результат выдается не сразу а через некоторое время, на as2 это где то 30 секунд, а на as3 около 10 минут. Если у вас более мощный компьютер, то вам придется ждать дольше или же менять код для для более быстрого увеличения цикла.
А теперь немного цифр, первый файл (AS2) выдает от 1800 до 2000, а второй (AS3) дает нам от 13000 до 18000. Частота процессора 1.6 поэтому у вас могут быть результаты другие, но соотношение результатов будут около одного к восьми. Что же мы получили? - actionScript3 быстрее actionScript2 в 8 раз. Конечно же я проверял только функцию которая интересует меня, если вы не согласны со статьей или считаете тесты (алгоритмы) не правильными - пишите в комментариях, критика это всегда дорога к прогрессу.
И чуть не забыл, файлы на которых проводились тесты (cs3):
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Сравнительный тест производительности ActionScript3 vs ActionScript2 (Flash)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.
Ха, интересно. Но вот только не понял, фпс расчитывается так - (количество миллисекунд на кадр / 1000), а у вас - (1000 / ....). Результат выдается не сразу а через некоторое время, на as2 это где то 30 секунд, а на as3 около 10 минут. выходит что ролик на ас2 работает в 20 раз быстрее. и тут же... actionScript3 быстрее actionScript2 в 8 раз. Чет я не понял Для увеличения скорости используйте указание типов данных. (Ясень пень, что команда var x:Number = Math.Random()*100; выполнится быстрее чем x = Math.Random() * 100;). столкновений точки и обьекта. смотря как ищите. Самый простой способ через Боундс или через расстояние
И так по порядку, ас2 выдает раньше результат потому что у него падает фпс быстрее (<20). Фпс вычисляется правильно, скопировал из старого проекта поэтому не вникал что там и как - но то что он работает правильно - я уверен.
Для увеличения скорости используйте указание типов данных - обозначение типов данных вне цикла и функции, поэтому они не влияют на результат.
Расстояние для вычисления столкновений только для круглых объектов. Боундс не слышал, есть гетПиксель, но это другая история.
Боундс - это если короче, прямоугольная область, а если еще короче, это четыре стороны прямоугольника, которые проверяются на сталкновение. Насчет гетПиксел - вариант нескольки странный. Но никак не могу понять смысл теста. Вернее что он тестирует Если тестирует столкновение, то есть же два типа определение столкновения - столкновение в текущем кадре, и столкновение в будущем кадре (вернее определение в каком кадру произойдет столкновение)
Ну это и есть столкновение (точка и фигура). Ну лучше использовать стандартный метод hitTest. Этот метод лежит в работе событий MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_UP и MouseEvent.MOUSE_MOVE и т.д (тоесть во всех событий мыши)
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]