【问题标题】:Output compile durations for swift files输出 swift 文件的编译持续时间
【发布时间】:2015-10-09 18:58:06
【问题描述】:

有没有办法输出在 xcode 构建期间编译 swift 文件所花费的时间?

我想从命令行编译以触发与 xcode 相同的构建,但要包括编译每个文件所花费的时间。

Report Navigator 显示每个文件的完整构建报告,但没有与之关联的时间范围。

我想缩短 Swift 1.2 项目的编译时间,因为清理后大约需要 5 - 10 分钟,或者在严重依赖文件中更改源后需要 3 -5 分钟。

【问题讨论】:

    标签: swift xcode compiler-optimization compilation-time


    【解决方案1】:

    您可以添加...

    -Xfrontend -debug-time-function-bodies
    

    …to Swift 编译器中的其他 Swift 标志 - 自定义标志 部分(构建设置)。

    注意:您必须保持这些标志的相同顺序。 -Xfrontend 表示应该将下一个标志传递给前端。颠倒顺序就不行了。

    然后您可以在构建日志中获取编译时间:

    这在您确实想要优化编译时间时很有用,而且在向 Apple Swift guys 报告编译时间缓慢的问题时,最好附上这种构建日志。

    归功于Joe Pamer 错误的编译器黑客。目前是 Apple(Swift、Clang)的工程经理,以前在 Microsoft(TypeScript、F#、JavaScript、.NET)担任工程经理。他在推特上回应了 Rob Rix 关于分析 Swift 编译的问题。这让我很好奇,所以我反汇编了编译器,检查了文本部分是否有更多标志,并找到了other hidden options。不要在生产代码中使用它们,只需使用它们即可。


    整个项目的构建时间。在终端中运行以下命令...

    defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
    

    …重启 Xcode,清理并构建,然后…


    如果我有 pod 怎么办?

    对您的 pods 项目执行上述操作

    【讨论】:

    • 谢谢。在扫描了大约 5 个类的编译日志后,它变得难以管理。有没有办法输出每个文件的总时间?
    • 更新了我的答案,描述了如何测量整个项目构建时间(不受支持的功能,可能会在任何未来版本中中断)。检查是否有办法测量单个文件。
    • 要关闭案例,没有开关或 plist 设置来输出每个文件的编译时间。或者我没找到。也许你可以用一些 shell 脚本包装 swift[c] 来测量它(没有尝试)。
    • Travis CI 确实显示了每个文件的编译时间!我猜他们使用 facebook xbuild 工具
    • 尝试使用这个:xcodebuild -workspace App.xcworkspace -scheme App clean build OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | grep .[0-9]ms | grep -v ^0.[0-9]ms | sort -nr > culprits.txt(来源:irace.me/swift-profiling
    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多