Приложение быстро на 3GS, но медленно на 3G - PullRequest
4 голосов
/ 29 апреля 2010

Я новичок в компьютерном кодировании, только что закончил кодировать приложение и протестировал его на 3G и 3GS. На 3GS все работало как на симуляторе. Однако, когда я попытался запустить его в 3G, приложение становится очень медленным. Я не уверен, в чем причина, и я надеюсь, что кто-то может пролить свет на меня.

Как правило, в моем приложении есть пара классов контроллеров представлений, один из которых является титульной страницей, другой - главной страницей, другой - настройкой и т. Д. , Но даже этот простой переход показывает неравномерную производительность на 3G! Моя другая часть приложения включает в себя увеличение некоторых изображений путем увеличения изображений, переключения изображений путем нажатия или растворения при получении сенсорных событий, сохранения фотографий в библиотеку фотографий и сохранения и извлечения некоторых фотографий в папке и некоторых данных в базе данных SQlite каждый из которых показывает негладкие действия.

По сравнению с тяжелым графическим или тяжелым математическим приложением, я думаю, что мое довольно просто. Я совершенно не понимаю, почему приложение будет вести себя так медленно и неровно, что вряд ли пригодится в 3G. Любая помощь / направление будет высоко ценится. Спасибо за помощь.

Ответы [ 4 ]

6 голосов
/ 29 апреля 2010

Возможно, вы захотите попробовать профилировать ваше приложение с помощью Shark , чтобы определить узкие места производительности.

1 голос
/ 29 апреля 2010

Вы используете много памяти? 3G имеет 128 МБ, а 3GS имеет 256 МБ ОЗУ.

Вы получаете предупреждения памяти? В моих отладочных сборках у меня есть NSLog в didReceiveMemoryWarning, чтобы я мог видеть, если / когда я получаю предупреждения.

РЕДАКТИРОВАТЬ: Проверьте размер ваших фотографий, они изменены для экрана iPhone или они оригинального размера?

1 голос
/ 29 апреля 2010

Я не знаю, насколько это актуально для вашего случая, но моя игра (бесстыдный плагин) MultiMaze графически не требует больших усилий и прекрасно работает на моем 3GS. Но когда я попробовал это на 3G, частота кадров упала до ледяной 10-20 кадров в секунду. Я перенес всю кодовую базу из CoreGraphics в OpenGL ES, и это имело огромное значение. Теперь он работает на пределе (60 кадров в секунду) на моем 3GS и очень близко к нему на 3G.

0 голосов
/ 12 мая 2010

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

Решение, которое у меня есть, заключается в создании временного составного представления, содержащего их все, и размещении составного изображения в виде изображения в полноэкранном режиме перед началом любой анимации. Это задерживает начало затухания, но само затухание теперь намного плавнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...