如何在Xcode中启用构建时间?

130
我想知道我的项目构建需要多长时间,比如通过在构建面板中显示来实现。 在Xcode中是否有此选项?
谢谢。
5个回答

262
在终端中输入以下命令:
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

构建完成后,"成功"消息旁边的活动查看器中会显示持续时间。

如果正在运行应用程序,则在查看持续时间之前,状态将被运行状态所取代。

这替换了旧版本Xcode中使用的条目:

defaults write com.apple.Xcode ShowBuildOperationDuration YES

输入此命令之前,可能需要关闭 Xcode。持续时间应出现在项目窗口左下角。

Xcode 开发人员的评论:"与所有未记录的用户默认值一样,此操作不受支持,假定(但不保证)准确,并且未来版本不保证有效。"


8
这也适用于Xcode 6。构建时间显示在窗口标题栏下方。 - Klaas
6
@bobobobo 在 Xcode 6.1.1 中时间出现的截图 <img src="http://i.imgur.com/6KkYdls.png"> - chunkyguy
3
有没有办法将它打印到文件中? - trusk
1
在Xcode 7.1.1中,我确认这个可以工作(使用较新的com.apple.dt.Xcode)。 - Jedidja
3
如果有其他人想知道“Activity Viewer”的含义,它是Xcode中位于中间顶部的窗口,显示当前正在构建的内容以及构建进程的进展情况。 - Warpzit
显示剩余8条评论

32
在Xcode 10中,您现在可以使用Timing Summary功能很好地分解构建时间。通过“Product->Perform Action->Build With Timing Summary”,这将显示每个目标构建时间和整个项目构建时间。您可以使用此数据进行大量分析,并且构建时间将取决于您的硬件。如果您想了解更多信息,请查看WWDC 2018中的Building Faster in Xcode。但是,默认情况下,Xcode会跟踪所有构建,并且您可以通过转到其报告导航器来检查它们的时间和日志。Build Logs within Report Navigator

我无法保存XCode的构建日志及其计时。我只能在XCode输出中看到时间。 - msk
@msk 是的,即使对于 Xcode 14.2,导出的日志中也不包含构建时间信息。 - undefined

11

不可以,但你可以使用命令行。进入你的项目目录并键入以下命令:

time xcodebuild

8

在Xcode 10之后

  • 如果你使用命令行进行构建,请使用 -showBuildTimingSummary 命令查看构建时间摘要。
xcodebuild -showBuildTimingSummary

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,可以选择 产品->执行操作->带有时间摘要的构建 。然后在Xcode构建日志中查看构建时间摘要。

1
现在正确的命令行参数是 -showBuildTimingSummary - Morse

4
我在Build Phases中使用Run Script解决了这个问题。
我在构建的起始点添加了一个Run Scriptecho $(date +%s) > ../build_start_time 并在结束时添加了另一个Run Script
START=$(cat ../build_start_time)
END=$(date +%s)
echo $(echo "$END - $START" | bc)

现在我可以在“构建日志 -> 所有消息”中看到时间。

1
在Xcode 6.4中,它不允许您将运行脚本构建阶段拖到任何“默认”构建阶段之前。如果您创建了一堆额外的构建阶段,它会允许您在它们之间重新排序,但似乎所有“默认”构建阶段都必须首先出现。您找到解决此问题的方法了吗? - Jason Pepas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接