Главная » Программирование игр под Android » ПОЛЕЗНЫЕ СОВЕТЫ  ПРИ РАЗРАБОТКЕ ИГР ДЛЯ ОС ANDROID

0

 

Android (или, скорее, Dalvik) иногда имеет некоторые странные показатели производительности. Я дам вам некоторые полезные и важные подсказки, которым стоит следовать, чтобы сделать ваши игры удобными.

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

Объекты могут создаваться в не самых очевидных местах, а этого вам хотелось бы избежать. Не пользуйтесь итераторами – они создают новые объекты. Не применяйте классы из стандартных коллекций Set или Map – они создают новые объекты при каждой вставке. Вместо этого задействуйте класс SparseArray, предлагаемый Android API. Используйте StringBuffer вместо склеивания строк оператором + (это действие каждый раз неявно создает объект StringBuffer). И ради всего святого – не применяйте обертки над примитивными объектами. О Вызовы методов имеют более высокую ассоциированную стоимость в Dalvik, чем в других виртуальных машинах. По возможности используйте статические методы – их производительность выше. Статические методы часто считаются злом (как и статические переменные), поскольку способствуют плохому дизайну кода. Поэтому старайтесь обеспечить четкую и ясную картину вашего кода. Кроме того, следует отказаться от использования свойств с геттерами и сеттерами – прямой доступ к полям в три раза быстрее, чем использование вызовов метода без JIT, и в семь раз быстрее – чем вместе с JIT. Тем не менее перед тем, как убирать свойства, еще раз подумайте о дизайне кода.

Операции с плавающей точкой на старых устройствах и версиях Dalvik без JIT (то есть везде, где стоит Android ранее версии 2.2) выполняются программно. Разработчики старой школы при этих словах сразу возвращаются к математике с фиксированной точкой. Не обольщайтесь – целочисленные операции деления тоже не слишком быстры. Однако в большинстве случаев вы спокойно сможете оперировать данными типа float, а новые устройства поддерживают модули плавающей точки (FPU), ускоряющие работу.

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

Конечно, существует еще много подводных камней, с которыми нужно быть осторожными. Далее в е я буду давать и другие небольшие подсказки по производительности. Если вы будете следовать этим рекомендациям, у вас все будет хорошо. Только не дайте победить сборщику мусора.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

  • Комментарии