【问题标题】:How to diagnose an unexpected delay during dragging?如何诊断拖动过程中的意外延迟?
【发布时间】:2023-03-10 23:40:01
【问题描述】:

有时,我的一个应用在复杂视图中拖动对象时会出现 2-10 秒的延迟。在某些情况下,延迟足以导致等待光标(旋转的死亡披萨)出现。

Time Profiler 没有发现什么特别值得注意的东西——只是在拖动对象时更新视图的预期绘图调用。 (计算量很大,但我发现暂停期间和暂停之间的配置文件没有明显差异。)

内存分析器显示暂停没有什么特别之处。在整个拖累过程中,分配似乎持平。泄漏是干净的。 (我最初的假设是我剥离了太多自动释放的对象,但这似乎不是问题。)

活动监视器表明,在拖动过程中,我几乎用完一个核心来进行所有重绘。这正是我所期望的。

对下一步该去哪里有什么想法吗?

【问题讨论】:

  • 是否有任何代码路径接触磁盘?
  • 或者如果你的内存使用率很高,一些应用程序内存可能已经换出到磁盘,那么再次访问它需要一些时间......
  • 暂停时间从 2 秒到 10 秒不等——我认为即使是大型 VM 命中也太长了。活动监视器未显示任何磁盘使用高峰。

标签: xcode cocoa debugging instruments


【解决方案1】:

嗯。好吧,也许您可​​以尝试在启用“记录等待线程”的情况下运行 Instruments.app。这将向您显示代码正在等待和运行的位置。您可能正坐在信号量中或执行一些 IO- 将显示在此模式中。

【讨论】:

    猜你喜欢
    • 2012-04-10
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多