
Air VS OpenFL. Тест Nape.



Всем привет!
Наконец-то я собрался и сделал демки на AS3 и Haxe, чтобы сравнить производительность Nape на iPad 3.
Версии используемых технологий/библиотек/ОС:
- Haxe 3.0.1,
- Nape 2.0.13 (haxelib),
- OpenFL 1.1.1 (haxelib),
- openfl-tilelayer 0.1 (https://github.com/matthewswallace/openfl-tilelayer),
- Flash CC,
- Air 4 Beta,
- Nape 2.0.12 SWC (http://napephys.com/nape-release.swc)
- Starling 1.4.1 SWC
- Xcode 5.0.2,
- iOS 6.1,
- OS X 10.9
Как собирались демки?
Haxe версия собиралась командой openfl build ios, тем самым создавался Xcode проект, с помощью которого компилировалась release ipa'шка и отправлялась на планшет.AS3 делалась в последнем Flash CC и бете AIR 4, с типом публикации «Apple App Store».
Исходники?
github.com/Hitek55/AS3NapeTestgithub.com/Hitek55/HaxeNapeTest
Скриншоты?
Линки на полноразмерки:Air s9.postimg.org/5xr1hjlyl/IMG_0258.png
Haxe s17.postimg.org/hokwuszfh/IMG_0257.png
Результаты:
Давайте разберемся с исходниками и выведем производительность Air на уровень Хакса =)Air 4 выдавал 5-20 кадров в секунду.
Хакс же проседал до 45 кадров в начале сцены (когда у Эйра было 5 FPS), когда все 210 физ.объектов прикасаются друг к другу и летят вниз, потом фпс поднимается до стабильных 60 и более не опускается.
Что я делаю не так?
UPD#1
Прилепил quadBatch, drawcalls = 1, фпс теперь колеблется от 18 до 38. Сорцы обновил.UPD#2
Отключил рендер, мах FPS был 50 кадров, что существенно уступает хаксу.UPD#3
326 тел хакс выдерживает достойно:при создании ~25 кадров,
когда разлетаются ~60,
лежат и прикасаются, 45, пока не заснут
5.firepic.org/5/images/2013-11/16/orc1merzvlgt.png
- +5
- Hitek55
Комментарии (71)
намекает на то, что наверняка на каждую такую картинку создается текстура. отсюда и столько дроуколлов. тогда как в hx-версии юзается тайл-леер который рисует через 1 дроуколл :)
Я не знаю как устроен хакс и его компиляция в натив, но дико интересно стало… Прикрути туда подсчет drawcalls, чтоб было ясно. Можешь мне в приват залепить как ты хакс собирал — я у себя тоже его собрать попробуй. У меня iPad4 — не могу тестировать соответственно.
Могу тебе скинуть ipa где у меня 60 fps. Main.ipa ставь его, джейл не нужен. И опиши свой опыт просмотра моей сборки.
а в цикле написал:
Таким образом, 210 объектов используют 1 текстуру, а не 210 разных. Меньше Draw calls — больше fps.
Да и в as3 файле есть моменты, которые можно поправить еще ;) Мне просто некогда это ща делать. Мне надо сервер настраивать…
А почему ты сначала меняешь позицию спрайта, а потом делаешь space.step()?
Это какая-то хитрая оптимизация?
Типа пока ГПУ жует vertex buffer ты степаешь физику?
Оставить только фпс.
Может, если привести к единому виду то и FPS почти сравняется? )
Бинго
Надо наверное будет небольшой тест запилить.
вот бокс фласц github.com/jesses/wck/wiki/box2d-flash-alchemy-port
Алхимия — 42 FPS
Обычный — 33 FPS
Разница 21%.
Может как раз в этом всё и дело с хексом и as3?
Значит именно то, что я написал. Язык си++ не имеет встроенного рантайма аля haxe и он эмулируется имеющимися средствами языка.
>> там полноценный сборщик мусора реализован
Через подсчёт ссылок он реализован в том числе.
>> это ли не рантайм?
Скорее всего имеет место быть неопределённость при использовании термина. Рантайм в данном контексте это встроенные возможности языка времени исполнения. На плюсах фичи хакса приходится эмулировать разумеется.
при создании ~25 кадров,
когда разлетаются ~60,
лежат и прикасаются, 45, пока не заснут
5.firepic.org/5/images/2013-11/16/orc1merzvlgt.png
Пиши сразу, — 1 против 4.5 — так круче выглядеть будет. Или «вообще не запускается против белого экрана».
2) Перепиши логику на native extension
3) Перепиши графику на native extension
4) Выкинь AIR за ненадобностью
…
6) PROFIT :D
Все, кто умеют писать нативно — им ни html5 ни air ни unity3d ни marmelade нафиг не нужен. Я думал это озвучивать даже смысла нет ибо это капитанство…
Отмена разработки плеера Next не так плохо, т.к. провести серьезное улучшения текущей VM существенно способно увеличить производительность. Конечному пользователю без разницы как это будет называться, ведь главное тут — не отказ от улучшений. По-этому не надо сеять панику. Все хорошо.
Почему никто не рассказывает про энкодеры мп3 бороздящие пространство большого театра?
* кривизна заключается в том, что течет память и байт код хоть и работает — делает это он не так, как должен. За это «спасибо» haxe «магии», которая действительно была актуально раньше. На старой VM. Это уже ясно стало благодаря куче внутренних тестов.
Nape быстрый, но может быть быстрее. Самое интересное — если OpenFL использует Nape от haxe, а не от as3 swc — то улучшив Nape мы добьемся еще большей производительности на устройстве именно в Air, а не OpenFL.
Сначала узнайте все от корочки до корочки и потом принимайте решения и убеждайте людей в чем-то. Кому мало одной технологии — двигайте на другую. Не надо только свои неудачи описывать так, как это неудача всей системы. Это лично Ваш опыт. И уверен, что Ваш опыт имеет ошибки реализации и не надо его выставлять как единственно правильный.
Посмотрите на IE — глюк на глюке. Кто-то запрещает под управлением Windows работать в другом браузере? Тогда что Вы тут доказываете?