26/12/2009

Fastest Iteration

Опубликовано в: Эксперименты — Nicolas Prof @ 11:28

Небольшой наглядный тест, сравнения итераций. Очень много дискуссий в интернете по поводу, что та или иная итерация быстрее другой.
Самое интересное, что при очень большом количестве итераций (1 000 000 000), разница между различными методиками For, полностью исчезает.

Результаты теста при 1 000 000 000 итераций:

4103 ms
5340 ms
4087 ms
4089 ms
4090 ms
4090 ms

Смотреть в действии

P.S.
Постарайтесь подобрать такое количество итераций, что бы время на тип итерации выходило в районе 500мс.
На хорошем процессоре, это примерно 100 000 000 итераций.
Так же нужно понимать, что самая медленная итерация, это когда в конструкции For, i и len имеют разные типы, к примеру int и uint, про Number вообще не стоит говорить.

02/07/2009

Powered by Alternativa3D

Опубликовано в: Эксперименты — Тэги: , , , , , , — Nicolas Prof @ 17:30

Реализация моего портфолио прошла долгий и тернистый путь, от маленькой трешовой флешки с кровью и рваной бумагой с звуками из игры «Носферату», до достойного 3D приложения.
Первая 3D реализация использовала Papervision Great White Alpha, т.е. самая первая и сырая версия Papervision 2.0. Движек выдавал в среднем 24 fps на «игровом» компьютере. Следующая версия портфолио уже использовала Away3D, интерактивность немножко прихрамывала, и API несильно отличалось, и все так же была возможность использовать Sprite материалы. Так же, кубики уже не вращались все время, а только когда пользователь использовал интерактивные возможности, т.е. сцена рендерилась при изменениях. FPS при рендеринге все так же «проседало».

И вот 4.0 версия портфолио, которая использует Alternativa3D. Вся навигация на сайте построена на мыши: левая, правая клавиши и колесико. Пропал МР3 плеер. На сайте два режима навигации, как вам идея? Почему не предоставить пользователю несколько режимов навигации, и пусть он выбирает более удобный для него. Так и появилась альтернативная навигация.
Производительность у нового движка отличная. Разработчики создали свою отображаемую модель, начав все с нуля (Object3D extends Object). Все бы хорошо, но вот очень нехватает параметра alpha и visible. Так же есть некоторые косяки, после масштабирования объектов, иногда начинают появляться артефакты в виде дополнительных треугольников на поверхности. Так же есть баг с рендерингом текстуры: если объект масштабируется, при этом происходит анимация вершин, и все это происходит за видом камеры, то текстуры не обновляются, и имеем обычный белый объект. Из всех 3-ёх 3D движков, Alternativa3D имеет самый «приятный» API и самую высокую производительность. Если разработчики еще добавят возможность использования DisplayObjectContainer как текстуры, то это будет самый лучший движек для создания Pure 3D Flash сайтов.

P.S.
Посвящается RSS Reader’ам.

12/06/2009

Необъятный Blur

Опубликовано в: Эксперименты — Тэги: , , , , — Nicolas Prof @ 14:06

Были ли у вас случаи, когда ограничения Flash не позволяли использовать фильтр?
Есть очень простой обходной путь. Если нам не разрешают применить фильтр к самому объекту, значит применим к его детям. Метод работает быстро, так как применение фильтра довольно таки быстрая операция. В этом можете убедиться в примере. Так же есть зависимость, что количество детей фильтруемого объекта прямо пропорционально кратности замедления процесса, т.е. если 100 детей, то время применения фильтра будет в 100 раз медленней. Вместо 10мс, будет 1сек при 10 000 итераций, согласитесь, что столько итераций в секунду в работающем проекте невозможно, так что у нас в запасе хорошие резервы, и мы вполне вольны использовать такую технику с каким либо Tween движком.

Смотреть в действии

P.S.
Кнопка Broke Holder, изменяет габариты спрайта на 5000 рх.

07/04/2009

Performance with Visible param and Display List

Опубликовано в: Эксперименты — Тэги: , — Nicolas Prof @ 21:20

Очень давно хотел провести тест на предмет того, как влияет на производительность параметр visible, а так же добавление и удаление объекта из Display List’а.
В тесте используется объект который имеет сложный вектор, тысячи точек. Объект можно удалять/добавлять в Display List, а так же запустить анимацию, и провести те же операции.
После этого теста, очевидна польза visible (освобождение памяти) параметра, удаление из Display List’а спасает лишь в случаи с анимацией (хотя и это было так же интересно, будет ли какая то нагрузка, если объекта нет в дисплей листе).

Смотреть в действии

P.S.
Тот кто угадает что изображено в исходном элементе используемом для построения вектора, получит плюшку.

10/03/2009

Reflect ver.2.0 – Extra Mirror

Опубликовано в: Эксперименты — Тэги: , — Nicolas Prof @ 18:35

После работы с классом отражения от AFComponents, стало очевидно чего не хватает в отличном отражении. Что мне понравилось в AFComponents варианте: отражение наследуется от спрайта, что дает пользователю возможность контролировать получаемый результат. Не понравилось, подход к созданию отражения, ну и реализация. Так же на практике, дизайнеры очень хотят видеть размытое отражение, что тоже необходимо учитывать.

В итоге вышел следующий инструмент:

  • Reflect наследуется от Sprite;
  • объект для отражения, может иметь различные модификаторы трансформации, scale, skew, rotate, так же совершенно не важно где находится registration point;
  • добавлен метод applyFilter, позволяет применять массив фильтров к Bitmap отражения;
  • добавлен class ReflectVars;

Специально для демо выбрал героя by TemplateMonster, который был увеличен (ScaleX, ScaleY), а так же двигается вне стартовых значений габаритов Movieclip

Download – Reflect ver. 2.0
Смотреть в действии

this.nextFrame ()this.prevFrame ()
 

Menu:
Twitter Updates:
    Archive:
    Control:
    Flash & Flex friends: