andengine (android opengl) ниско използване на процесора

Имам andengine игра, която има:

  • 45-50-55 fps на нормален Galaxy S3, температурата на телефона е топла.
  • стабилни 60 кадъра в секунда на CM11 Galaxy S3 с root в режим на производителност (максимална честота на процесора = 1400 mhz). С root можете да промените честотата на процесора. Температурата на телефона е почти гореща.
  • 40-45fps на моя Nexus 6 (без root), но този телефон е по-бърз от 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)! Как мога да го разделя на отделни теми? В публикацията има нов въпрос: защо кадъра в секунда на моята игра е еднакъв и на двете устройства? Nexus6 има по-бърз процесор. Ако променя честотата на максимум, играта ще бъде по-бърза! Не само многонишковостта е проблемът. ps: Имам много updatehandler (различни нишки) в нишката за актуализация. - 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. Режим на производителност: След руутване на телефона промених режима на регулиране на мащаба (в процесора) в производителност, като промяната на min hz не беше необходима. Сега телефонът е горещ, а не топъл!
  2. Лоша ефективност на мобилните реклами: Изключих всички интернет връзки (wifi, мобилни), поради което мобилната реклама изчезна от играта. Използвам admob в играта си, която не е с най-доброто представяне.

Това доведе до падане на FPS в моята игра(и)!

person voodoo98    schedule 09.07.2015