正如标题所示,NSOperationQueue的maxConcurrentOperationCount的默认值是什么?
是否设置为1?
从documentation开始,
[接收者使用setMaxConcurrentOperationCount:方法。 如果没有值已明确设置,此方法返回NSOperationQueueDefaultMaxConcurrentOperationCount默认情况下。
是NSOperationQueueDefaultMaxConcurrentOperationCount
。如果设置了此选项,它将根据可用处理器的数量和其他相关因素选择一个适当的值。
enum {
NSOperationQueueDefaultMaxConcurrentOperationCount = -1
};
NSOperationQueueDefaultMaxConcurrentOperationCount:默认的最大操作数由NSOperationQueue对象基于当前系统条件。
[在我的一个应用程序中,我一次将NSOperation
的大约35k实例添加到NSOperationQueue
。如果将maxConcurrentOperationCount
设置为64,则与默认值相比,我可以获得大约20倍的性能。 CPU负载从〜120%上升到400%,这似乎表明默认值太高,以至于CPU大部分时间都在忙于操作队列开销。
结论:如果您的NSOperation
寿命很短,可能值得与maxConcurrentOperationCount
一起玩。