gpt4 book ai didi

swift - Xcode 时间分析器的准确性

转载 作者:行者123 更新时间:2023-12-05 02:56:45 25 4
gpt4 key购买 nike

我想知道从一个屏幕转到另一个屏幕所需的确切时间。例如,登录和访问下一个屏幕需要多长时间。我尝试使用 Xcode 时间分析器,但它没有记录所有内容。我什至启用了“高频”选项,但我仍然认为缺少某些东西。我了解到,您必须使用路标才能达到准确性。哪个有效,但您必须将 iOS 版本设置为 12,并更改代码以添加 os_signpost。有没有另一种方法可以在不更改 iOS 版本的情况下实现这一目标?还是代码?

您是否有任何其他 Xcode 分析器工具或其他可以给我此输出的一般工具的建议?

我认为时间分析器会给我每个方法的开始和结束时间,类似于 Android Studio 分析器。我错过了什么吗?

最佳答案

一些观察:

  1. 是的,如果您想计算两段代码之间耗时,路标是一种很好的方法。如果你想知道这两个路标之间发生了什么,一个“兴趣点”范围,你可以通过 control 点击放大。这让您可以专注于相关区域:

    enter image description here

  2. 我建议选择“记录等待线程”。有时你的线程被某些东西阻塞了,如果你不选择这个选项,当你的线程被阻塞时它不会捕获样本,通常会更难找到罪魁祸首。

    enter image description here

    (我也倾向于以延迟模式进行记录,以尽量减少观察者效应。)

  3. 你说

    you have to set your iOS version to 12 ...

    嗯,不完全是。当然,如果你想使用 os_signpost,你必须在 iOS 12 设备/模拟器上进行分析,但你不必更改应用程序的目标。您只需将日志语句包装在 #available block 中,例如:

    import UIKit
    import os.log

    @available(iOS 12.0, *)
    let pointsOfInterest = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: .pointsOfInterest)

    class ViewController: UIViewController {
    @IBAction func didTapNextButton(_ sender: Any) {
    if #available(iOS 12.0, *) {
    os_signpost(.begin, log: pointsOfInterest, name: "Transition")
    }

    performSegue(withIdentifier: "Next", sender: self)
    }
    }

    import UIKit
    import os.log

    class SecondViewController: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()

    somethingSlow()
    }

    override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if #available(iOS 12.0, *) {
    os_signpost(.end, log: pointsOfInterest, name: "Transition")
    }
    }

    func somethingSlow() { ... }

    }
  4. 如果您不喜欢 if#available 检查并且您必须支持较旧的操作系统版本,只需使用 kdebug:

    kdebug_signpost_start(0, 0, 0, 0, 0)

    kdebug_signpost_end(0, 0, 0, 0, 0)

    你的兴趣点范围没有很好的名字,但它适用于旧的 iOS 版本。

有关详细信息,请参阅 WWDC 2018 视频 Measuring Performance Using Logging .

关于swift - Xcode 时间分析器的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60212435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com