Может ли Xcode повлиять на производительность приложения при отладке? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение, написанное на Swift на SceneKit + Metal.Когда я собираю и запускаю приложение из Xcode, счетчик fps показывает 40fps.Но если я запускаю приложение сам, нажав на иконку на трамплине, счетчик fps показывает 60fps.Как это могло произойти?Может ли Xcode как-то повлиять на производительность приложения при отладке?Я понятия не имею, как все это работает, но я полагаю, что для правильной работы отладки могут быть некоторые ловушки, которые влияют на производительность.Если да, могу ли я согласиться с этим?

Мне известны различные флаги сборки для отладочных и выпускных сборок, но я не делаю сборку для выпуска.Производительность отличается в той же сборке отладки при запуске из Xcode против, когда я запускаю приложение вручную на телефоне.

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

По умолчанию Xcode включает слой проверки металла.Это делает кучу дополнительных проверок того, как вы используете это, чтобы поймать неправильное использование.Дополнительная проверка медленная, поэтому Metal не делает этого, пока не включена проверка.

Это можно изменить в редакторе схем Xcode.Это задокументировано в Руководстве Apple по программированию металлов.

0 голосов
/ 29 сентября 2018

Я экспериментировал с различными параметрами в редакторе схем и обнаружил, что флажок Debug executable влияет на производительность в моем случае.Поэтому мое предположение об отладчике было правильным, но я раньше не знал об этом флажке.

0 голосов
/ 27 сентября 2018

Хороший учебник по сборке iOS .Это может быть полезно для темы

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

А также посмотрите этот ответ об изменении уровней оптимизации.

...