我一直在研究使用块实现 Objective-C 中的 reduce [inject,fold 或者你想叫它什么] 函数,并且想知道是否有任何技术可以并行计算应用的函数是可结合的(例如整数集合的总和)?
也就是说,是否可能并行化或改进类似于下面对 NSArray 的操作:
- (id)reduceWithBlock:(id (^)(id memo, id obj))block andAccumulator:(id)accumulator
{
id acc = [[accumulator copy] autorelease];
for (id obj in self) {
acc = block(acc, obj);
}
return acc;
}
使用Grand Central Dispatch吗?
编辑:我进行了第二次尝试,将数组分成较小的块并在单独的调度队列中进行减少,但在我的测试中没有明显的性能提升:(此处为代码)