PGO: Почему XCode генерирует пустой файл.profdata?
Я пытаюсь использовать профильную оптимизацию в XCode 8.
Я следовал инструкциям здесь. Я сделал все, чтобы закрыть свое приложение, используя кнопку остановки в XCode, как описано в документе.
Я проверил, что команды compile и link включают -fprofile-instr-generate
аргумент.
Процесс успешно сгенерировал файл.profdata, но этот файл занимает всего 1064 байта, что кажется очень маленьким, учитывая, что моя программа выполнила десятки или сотни тысяч вызовов функций во время генерации профиля. Бег "xcrun -sdk iphoneos llvm-profdata show <profdata file>
"дает такой вывод:
Total functions: 0
Maximum function count: 0
Maximum internal block count: 0
Который, кажется, указывает, что мой файл profdata полностью пуст!
На данный момент я очень застрял, и я не уверен, как создать действительный файл.profdata. Кто-нибудь может предложить руководство?
1 ответ
При создании профиля оптимизации важно выйти из приложения определенным образом.
Несмотря на противоположную документацию Apple, я заметил, что выход из приложения нажатием кнопки "Стоп" в XCode не генерирует действительный профиль - вместо этого он генерирует 1064-байтовый профиль с нулевыми функциями.
Я узнал, что выход из приложения по телефону exit(0)
или путем завершения приложения через интерфейс iOS (в iOS 10: дважды нажмите кнопку "Домой", проведите пальцем вверх) правильно генерирует профиль. В моем случае правильно сгенерированный профиль составляет 34 мегабайта.