У меня есть iPhone-игра с игровым движком Unity и собственной письменной библиотекой для доступа к платформе ядра Apple Motion. Производительность отличная на iPhone 5 и в прошлом была довольно хорошей на iPhone 4.Производительность уменьшается через некоторое время, особенно когда устройство отдыхает
Запуск моего приложения сегодня на iPhone 4 (iOS 6.1.3) происходит непрерывное падение частоты кадров через некоторое время (заметное через 5-10 минут). Примерно через 20-30 минут игра почти неиграбельная и, похоже, работает медленным движением.
Странная вещь: эффект возникает, особенно когда устройство лежит на столе. Когда я перемещаю устройство, частота кадров заметно увеличивается, но уменьшается, когда нет движения. Я узнал, что код игры, написанный на C# (движок игры Unity), не виноват в этом, но Obj-C часть для управления движением с помощью Core Motion.
Я думаю, что проблема началась с того, что я обновился с iOS 5.1.x до iOS 6.1.3, но я не уверен. Трудно точно узнать историю изменений, когда проблема началась, потому что я сделал все более длительные тесты на iPhone 5 и просто быстрые тесты на iPhone 4 (OK, извлеченный урок ;-).
Я использую метод «старого стиля» для извлечения CMDeviceMotion
экземпляров i.e startDeviceMotionUpdates без обработчика блоков. Вытягивающий код работает в отдельном потоке, который оказался самым перфомантным способом - ну, в прошлом.
Встроенный профилировщик iOS (консоль) не показывает значительного объема памяти, но я считаю, что плагин с внутренним кодом не учитывается в статистике. Профайлер Xcode тоже не показывал никаких утечек, насколько я могу это видеть. Просто большая часть распределений памяти и deallocs, что было немного удивительно для меня (я думаю, что повторное использование экземпляров CMDeviceMotion внутри может быть быстрее при опросе, но кому это важно).
Вопрос: Существуют ли какие-либо известные проблемы этого созвездия на IOS 6? Я имею в виду, вытягивать, работает в отдельном потоке, 60 Гц, в сочетании с игрой Unity двигателя + Open GL ES 2, ...