Как включить время сборки в Xcode?


91

Я хотел бы знать, сколько времени занимает сборка моего проекта, например, отображая его на панели сборки. Доступна ли эта опция где-нибудь в Xcode?

Благодарю.

Ответы:


180

Введите это в терминал:

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

Продолжительность отображается в средстве просмотра активности после сборки вместе с сообщением «Успешно».

Если вы запускаете приложение, статус будет заменен текущим статусом, прежде чем вы сможете увидеть продолжительность.

Это заменяет запись, которая использовалась в более старых версиях Xcode:

по умолчанию пишется com.apple.Xcode ShowBuildOperationDuration ДА

Перед вводом этой команды может потребоваться закрыть Xcode. Продолжительность должна отображаться в нижнем левом углу окна проекта.

Комментарий разработчика Xcode: «Как и все недокументированные пользовательские значения по умолчанию, это не поддерживается, считается (но не гарантируется) точным, и не гарантируется его эффективность в будущих версиях».


7
Это также работает для Xcode 6. Время сборки отображается под строкой заголовка окна.
Клаас

6
@bobobobo Скриншот, где отображается время в Xcode 6.1.1 <img src = " i.imgur.com/6KkYdls.png ">
chunkyguy

2
Есть ли способ распечатать это в файл?
Alex Bartiş

1
Подтверждает, что это работает для меня в Xcode 7.1.1 (используя более новую com.apple.dt.Xcode
версию

2
Если кому-то еще интересно, программа просмотра активности - это окно в середине верхней части xcode, где оно показывает, что в настоящее время строится и насколько далеко он находится.
Warpzit

14

В Xcode 10 вы теперь можете увидеть отличную разбивку времени сборки, используя функцию Timing Summary.

Продукт-> Выполнить действие-> Сборка с учетом сроков

Это покажет каждое из ваших целевых значений времени сборки и общее время сборки проекта. Вы можете провести большой анализ, используя эти данные, и время сборки будет зависеть от вашего оборудования. Прочтите статью Building Faster in Xcode from WWDC 2018, если хотите узнать больше.

Однако Xcode по умолчанию отслеживает все ваши сборки, и вы можете проверить их время и журналы, перейдя в их навигатор отчетов.

Журналы сборки в навигаторе отчетов


Я не могу сохранить журнал сборки из XCode с указанием времени. Я вижу время только в выводе XCode
msk

13

нет, но вы можете использовать командную строку. cd в каталог вашего проекта и введите

time xcodebuild

3

Я решил это с помощью Run Scripts вBuild Phases

Я добавил один сценарий запуска в начальную точку сборки:

echo $(date +%s) > ../build_start_time

и один в конце:

START=$(cat ../build_start_time)
END=$(date +%s)
echo $(echo "$END - $START" | bc)

Теперь я могу видеть время в журнале сборки -> Все сообщения


1
В Xcode 6.4 он не позволяет вам перетаскивать этап сборки сценария выполнения до любой из фаз сборки «стандартного». Если вы создадите кучу дополнительных этапов сборки, это позволит вам переупорядочить их между собой, но, похоже, все «стандартные» этапы сборки должны быть первыми. Вы нашли способ обойти это?
Джейсон Пепас

0

После Xcode 10

  • если вы строите из командной строки, используйте -buildWithTimingSummaryдля просмотра сводки времени сборки.
xcodebuild -buildWithTimingSummary
Build Timing Summary
CompileSwiftSources (1 task) | 5.434 seconds
PhaseScriptExecution (1 task) | 5.046 seconds
CompileAssetCatalog (1 task) | 2.788 seconds
CompileStoryboard (1 task) | 1.880 seconds CompileMetalFile (5 tasks) | 1.735 seconds
CopySwiftLibs (1 task) | 0.740 seconds
Ld (2 tasks) | 0.306 seconds
CodeSign (3 tasks) | 0.177 seconds
CompileC (1 task) | 0.170 seconds
MetalLink (2 tasks) | 0.046 seconds
Ditto (4 tasks) | 0.032 seconds
LinkStoryboards (1 task) | 0.023 seconds
  • Если вы используете Xcode, Product->Perform Action->Build With Timing Summary. И смотрите сводку времени сборки в журнале сборки Xcode.

В настоящее время правильный аргумент командной строки-showBuildTimingSummary
Морс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.