dispatch_async()
我怀疑我的应用程序正在使用调用创建大量线程。我见过超过 50 和 80 个线程的崩溃报告。这是一个大型代码库,我没有编写,也没有完全剖析。我想做的是获取我们线程使用情况的概况;我们正在创建多少个线程,何时创建它们等。
我的目标是弄清楚我们把所有的时间都花在了交换线程上,如果使用 NSOperationQueue 会更好,所以我们有更多的控制权,而不是随便用 dispatch_async'ing 块。
欢迎任何对此进行调查的想法/技术。
dispatch_async()
我怀疑我的应用程序正在使用调用创建大量线程。我见过超过 50 和 80 个线程的崩溃报告。这是一个大型代码库,我没有编写,也没有完全剖析。我想做的是获取我们线程使用情况的概况;我们正在创建多少个线程,何时创建它们等。
我的目标是弄清楚我们把所有的时间都花在了交换线程上,如果使用 NSOperationQueue 会更好,所以我们有更多的控制权,而不是随便用 dispatch_async'ing 块。
欢迎任何对此进行调查的想法/技术。
看起来你需要看看仪器。从 Apple 文档或 WWDC 会议或任何您想要的地方了解它。有很多资源
如果您需要实现一些依赖项,通常 NSOperationQueues 肯定会更好。
正如 Brad Llarson 指出的那样,有一些 WWDC 会议在许多情况下都有帮助。然而,除了优化你的调用之外,你还应该考虑让你的代码更易于阅读并且更好。我从未在 iOS 上见过包含多达 80 个队列的源代码。app的架构一定有问题。
如果我错了,请告诉我任何人。
如果您正在旋转那么多线程,那么您很可能会受到 I/O 限制。此外,Mike 的文章很棒,但它已经很老了(尽管仍然与常规队列相关)。
而不是 using dispatch_async
,您应该使用dispatch_io
和朋友来满足您的 I/O 要求。他们为您处理所有异步监视和回调......并且不会用无关的处理线程超出您的进程。