我正在运行此代码
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
NSLog(@"Main Thread? %d", [NSThread isMainThread]);
// non-trivial non-UI code here
});
NSLog
表示我实际上是在主线程上,但是...我的印象是,如果我使用dispatch_sync
(相对而言),非平凡的非UI代码运行得更快没什么。)
如果它在主线程上运行,有什么办法可以更快?
答案 0 :(得分:4)
全局并发GCD队列没有排序,将其中一个传递给dispatch_sync()是一个noop,dispatch_sync()只会在这种情况下直接执行指定的块,就像你写的一样
^{...}();
答案 1 :(得分:1)
通过限制运行的线程数,从技术上讲,您可以确保提高性能,但不建议这样做。如果您的任务需要花费大量时间(具体意义,用户体验会受到无响应的UI的影响),那么只需使用dispatch_async
或内联块(闭包)的新线程。最佳选择是优化算法以改善任务的长度。
通过在主线程上运行,你不会注意到速度上的显着差异。