Прежде всего, я не могу предложить много подробностей, поэтому я понимаю, что этот вопрос может показаться неполным. На этом этапе я действительно ищу любые идеи. Честно говоря, я просто озадачен этим.Приложение iOS замедляется через несколько секунд, ускоряет резервное копирование, если приостановлено и возобновлено в отладчике
Я создаю графическое приложение, которое действительно выделяет процессор. Использование процессора на устройствах, как правило, составляет около 150% в соответствии с XCode (я знаю, что это звучит странно, возможно, это 200% из-за устройства, имеющего два ядра). Я измерил задачи, которые выполняют большую часть обработки, поэтому я могу видеть, сколько времени они занимают в отладочном выходе. Также обратите внимание, что я компилирую с -Ofast (агрессивная оптимизация), даже для отладочных сборников.
Вот что странно. Около 5-10 секунд в режиме интенсивного использования процессора в приложении все замедляется. Это очень заметно. Из-за моего инструментария я вижу, что внезапно все занимает примерно в 3 раза больше, чем раньше. Он довольно однородный по всем задачам, и он не ускоряется. Вот что странно. Если я нарушу выполнение в отладчике и возобновить, я получаю еще 5-10 секунд быстрого выполнения, прежде чем он снова замедлится.
Рассматривая использование ЦП и памяти, указанное XCode, все остается примерно одинаковым. В любой момент приложение использует не более 90 МБ памяти.
Есть ли функция iOS, которая замедляет приложения с интенсивным использованием процессора или подзаряжает устройство для экономии времени автономной работы? Я понимаю, что я разделяю ресурсы с ОС, но это поведение, которое я могу надежно воспроизвести каждый раз.
Опять же, я понимаю, что мой вопрос неясен, и нет никакого соответствующего кода, который я могу опубликовать. Любые идеи о причинах или даже методах отладки приветствуются.
Вы делаете диск или сеть io? Я могу сопоставить поведение с файловой копией, которая быстро кричит - до тех пор, пока кеши не будут заполнены, и вы будете уменьшены до реального самого медленного элемента. Остановка дает системное время для дыхания (пустые очереди и кеши), и когда вы снова запустите код, произойдет тот же эффект. – thst
Это действительно хорошая идея, но, к сожалению, в это время нет ввода-вывода на диске или сети. –
Насколько горячим является устройство? Это может быть температурный предохранитель? – thst