SuperAPI AI 工具集

axiom-concurrency-profiling

通用与其它

查看项目

更新于 10-16 00:22

技能介绍

用途:在怀疑 Swift Concurrency(async/await、actor、任务组)造成性能问题时,用 Instruments 定位并优化。适用信号包括异步操作期间 UI 卡顿、疑似 actor 争用、任务已排队却不执行、主线程被异步工作阻塞、需要可视化任务执行流。若问题属于纯 CPU 性能或与并发无关的内存问题,或尚未确认并发是瓶颈,则不应使用本技能。

主要能力:提供 Swift Concurrency Instruments 模板的解读方法,可查看 Swift Tasks(任务生命周期与父子关系)、Swift Actors(actor 访问与争用可视化)、Thread States(阻塞/运行/挂起)以及 Running/Alive/Total Tasks 统计;颜色编码为蓝=执行、红=等待争用、灰=挂起等待。包含四个工作流:诊断主线程阻塞(把重计算移出 MainActor,如用 Task.detached)、查找 actor 争用(将重活标记为 nonisolated、拆分 actor、对热路径用 Mutex、缩小 actor 隔离范围)、线程池耗尽(移除阻塞原语,改用异步 API,如以 URLSession 异步读取替代 Data(contentsOf:))、优先级反转(检查任务优先级与等待链,为关键路径显式指定优先级)。

使用方式:在 Instruments 中选用 Swift Concurrency 模板进行 profile;启用 Swift Actors 等 instrument;按上述症状与指标定位问题。文档给出的快速自查包括:确认代码确有挂起点、避免在 await 期间持锁、避免在循环中无节制创建 Task(改用 withTaskGroup)、不要在异步上下文中使用 DispatchSemaphore。调试标志 SWIFT_CONCURRENCY_COOPERATIVE_THREAD_BOUNDS=1 可检测异步上下文中的不安全阻塞。

限制与说明:并发问题需先确认瓶颈在并发,纯 CPU 或内存问题应改用 Time Profiler 或 Allocations。协作线程池线程数固定为 CPU 核心数,阻塞调用会造成池耗尽甚至死锁,因此应避免 DispatchSemaphore.wait()、pthread_cond_wait、同步文件/网络 I/O、Task 中的 Thread.sleep()。文中提及的 WWDC 场次、文档路径与相关技能仅作参考;具体价格、收费与平台支持信息暂未提供。