Производительность Cocos2d + Box2d ARMv6 против ARMv7 - PullRequest
1 голос
/ 06 октября 2011

Я довольно интенсивно разрабатываю игру, в которой используется физика box2d, и мой бета-тестер сообщил о небрежной производительности, когда на экране было много объектов. Я практически всегда зависал с версией приложения DEBUG, и у меня все время были стабильные 60 кадров в секунду. После игры практически со всеми настройками сборки я заметил, что в режиме сборки DEBUG флаг ONLY_ACTIVE_ARCH был YES, тогда как в RELEASE он был NO. После сборки версии RELEASE только для ARMv6 и установки ее на устройство с поддержкой ARMv7 мы получили стабильные 60 кадров в секунду. Попытка собрать для ARMv7 (Thumb) снова дала небрежную (на 30 - 50% хуже) производительность. В средах, не имитирующих физику, также наблюдалось небольшое снижение производительности. Устройствами для тестирования были iPod Touch 4, iPhone 4 и iPhone 3GS. Не могли бы вы поделиться своим мнением о том, почему это может быть так? Понятия не имею :)

Ответы [ 2 ]

2 голосов
/ 18 марта 2012

Я заметил ту же проблему.После некоторых тестов я понял, что производительность стала намного лучше, если я установил следующий режим рендеринга:

<renderMode>gpu</renderMode>

Я тестировал это на galaxy s2.До сих пор я не знаю, как влияние на другие устройства ...

0 голосов
/ 06 октября 2011

Прежде всего: всегда измеряйте производительность только в релизных сборках. Отладочные сборки включают в себя утверждения, ведение журнала и, возможно, другие вещи, которые могут исказить результаты вашей производительности, обычно к худшему.

Если я правильно понял, вы говорите, что код ARMv6 работает плавно (60 к / с) на всех устройствах, тогда как сборка для ARMv7 с включенными инструкциями Thumb дает вам «небрежную» производительность. Я полагаю, что «на 30-50% хуже» означает примерно 30-45 кадров в секунду для кода ARMv7 на всех 3 упомянутых устройствах. Похоже, что у вас нет сопоставимого сценария тестирования, то есть игра начинается с одинакового количества объектов в одинаковых позициях, чтобы можно было точно сравнить производительность между устройствами. Трудно оценить реальные различия в производительности, если вы вручную воспроизводите сцену «много объектов», играя в игру.

Поскольку у вас уже включены инструкции ARMv7 и thumb, вы действительно должны получить хорошую производительность, особенно на устройствах 4-го поколения. Вы можете попробовать с отключенным большим пальцем и повторить тестирование. Вам также следует проверить уровень оптимизации вашей сборки выпуска, он должен быть: Самый быстрый, Самый маленький. В общем, проверьте настройки сборки на предмет любых записей, которые влияют только на ARMv6 или ARMv7 (такие записи отмечены стрелкой для их расширения).

Вам также следует убедиться, что ваша проблема производительности действительно связана с физикой. «Много объектов» означает, что на экране также есть «много спрайтов». Если они не спрайтованы, производительность может упасть намного быстрее. Если они также частично прозрачны, повернуты или масштабированы, производительность без пакетной обработки будет еще хуже.

...