andengine (android opengl) низкая загрузка процессора

У меня есть игра andengine, в которой есть:

  • 45-50-55 фпс на обычном Galaxy S3, температура телефона теплая.
  • стабильные 60 кадров в секунду на CM11 Galaxy S3 с рутом в режиме производительности (максимальная частота процессора = 1400 МГц) . С помощью root вы можете изменить частоту процессора. Температура телефона почти горячая.
  • 40-45fps на моем Nexus 6 (без рута), но этот телефон быстрее, чем galaxy s3! Температура телефона почти холодная.
The resolutions of the game are the same!

Главный вопрос: почему в моей игре fps одинаковый на обоих устройствах? На Nexus6 должно быть быстрее!

Игра: https://play.google.com/store/apps/details?id=com.hattedskull.gangsters


person voodoo98    schedule 12.04.2015    source источник
comment
Я измерил использование процессора с помощью adb shell top -m 10 -d 1 -s cpu. Максимальная загрузка ЦП составляет 40%! Так что проблема в том, что процессор не работает в максимальной нагрузке. Как я могу увеличить его из кода?   -  person voodoo98    schedule 13.04.2015


Ответы (2)


когда процессор быстрее, но показывает меньшую производительность, чем другой процессор, возможно, он использует только 1 из 2, 4, 8, 12 ядер. это всего 25% использования, процессор остается холодным. одноядерный процессор всегда будет гореть на 100% и нагреваться. Многопоточность — это решение. это "заставит" процессор работать на 100%, и игра будет работать быстрее

person cody b    schedule 12.04.2015
comment
Спасибо за ответ, но я должен работать со стабильными 60 кадрами в секунду на Nexus 6. - person voodoo98; 14.04.2015
comment
phonearena.com/phones/Google-Nexus-6_id8626 у nexus6 есть четырехъядерный процессор, поэтому многопоточность — это решение. Кроме того, вы сами сказали, что процессор работает на 40%, это также показатель того, что вам следует использовать многопоточность. вы спрашивали в этом комментарии, как увеличить загрузку процессора. ответ снова будет многопоточным. я не знаю, какой язык вы используете, так что вы должны сами понять, как многопоточность работает на вашей платформе - person cody b; 14.04.2015
comment
Благодарю вас! В принципе вы правы: многопоточность крайне важна, но у меня в движке только один поток обновлений (на основе java)! Как я могу разделить его на отдельные потоки? В посте новый вопрос: почему fps в моей игре одинаковый на обоих устройствах? Nexus6 имеет более быстрый процессор. Если я изменю частоту на максимальную, игра будет быстрее! Проблема не только в многопоточности. ps: у меня много обработчиков обновлений (разных потоков) в потоке обновлений. - person voodoo98; 14.04.2015
comment
вы можете сделать code*class* extends Threadcode и иметь метод code public void run() {//do stuff} code, где вы делаете что-то, и иметь метод запуска, который делает code t = new Thread (this, threadName); code или code t.start(); code это должно быть хорошо. иметь как минимум 4 потока для 4 ядер - person cody b; 15.04.2015

Я отвечаю на свой вопрос, потому что это неочевидно (для меня), поэтому решение:

  1. Режим производительности: после рутирования телефона я изменил режим регулятора масштабирования (на процессоре) в разделе производительность, изменение мин. Гц не потребовалось. Теперь телефон горячий, а не теплый!
  2. Плохая работа мобильной рекламы: я отключил все интернет-соединения (wi-fi, мобильный), поэтому мобильная реклама исчезла из игры. Я использую в своей игре адмоб, который имеет не лучшую производительность.

Это вызвало падение FPS в моих играх!

person voodoo98    schedule 09.07.2015