0
我有一個嵌套for循環。我想使用GCD併發優化它。試過:如何使用dispatch_apply替換GCD的嵌套for循環以獲得最大併發性能
- 用gcd_apply替換循環。
- 僅替換gcd_apply的inner for循環。
我想得到最後的結果放在沒有改變的順序。
-(NSMutableArray*)getsportNotificationObjectsByGroup{
NSMutableArray* notificationObjects = [NSMutableArray array];
NSString* defaultNoteValue;
defaultNoteValue = [WADeviceAndAppSettingPopUpManager getDefaultNoteValueBasedOnSystemAlertButtonAction];
for(WACategoryInfo * categoryInfo in self.allSportSCategories){
@autoreleasepool {
NSMutableArray *subArray = [[NSMutableArray alloc] init];;
for (NSDictionary *dictNotificationTags in categoryInfo.notificationTags) {
NSString *tagName, *tagCode;
BOOL isTagDefaultEnabled = NO;
tagName = [dictNotificationTags objectForKeyWithNullCheck:ktagName];
tagCode = [dictNotificationTags objectForKeyWithNullCheck:ktagCode];
isTagDefaultEnabled = [[dictNotificationTags objectForKeyWithNullCheck:kisTagDefaultEnabled] boolValue];
//********value computation*******//
NSString* val = @"";
if ([WAConfigLoader sharedInstance].isCollegeStyleApp) {
val = [WADeviceAndAppSettingPopUpManager getValueForSwitch:dictNotificationTags];
}
//*****value computation*********//
NSDictionary *sportDetail = @{
kname:tagName,
ktype:kswitch,
kid:tagCode,
kvalue : val,
ksportStringId:categoryInfo.sportStringID,
kTitleKey : tagName
};
[subArray addObject:sportDetail];
}
NSMutableDictionary *aNewDict = [[NSMutableDictionary alloc] init];
[aNewDict setObject:subArray forKey:kdata];
[aNewDict setObject:categoryInfo.sportTitle forKey:ksection];
[notificationObjects addObject:aNewDict];
}
}
return notificationObjects;
}
這不是強制使用僅GCD,我關心的是最大限度地循環性能。
「我想把最後的結果放在一起,不加改變」。那麼,如果你同時做了這些事情,那麼你就無法控制它完成的任務,簡單明瞭。所以,重構你的代碼,以便它沒關係。例如。將結果存儲在字典中,然後返回到原始數組以找出您應該從字典中檢索它們的順序。 – Rob
你說你已經試過派遣申請。所以,不要要求我們再寫一遍,而是要告訴我們你的嘗試。撇開結果的順序,其他情況如何?你獲得了什麼樣的表現收益?如果代碼計算密集程度不夠高,則可能看不到顯着的改進(尤其是在添加必要的開銷以同步結果後)。 – Rob