0
我有一堆循环在plist中为我找到正确的单词并将其过滤掉。然而,它非常缓慢,在plist中总共有大约2000个字。看到下面的代码,我需要加快速度,这会导致大约2-3秒的延迟!不知道我怎么能。加速嵌套循环?
plist是由大约200个阵列组成的,每个阵列有10个单词。所以我抓住plist的字典dict
。然后遍历所有这些数组,直到找到我需要的单词。
for (int i = 0; i < [lang1Words count]; i++)
{
NSString *errorWordLang1 = [lang1Words objectAtIndex:i];
for (NSArray *a in [dict allValues])
{
for (NSString *s in a)
{
if ([errorWordLang1 isEqualToString:s])
{
NSArray *temp = [dict allKeysForObject:a];
NSString *originLang1ArrayKey = [temp objectAtIndex:0];
NSArray *lang1Temp = [self getWordsArrayForKey:originLang1ArrayKey];
NSInteger index = [lang1Temp indexOfObject:errorWordLang1];
NSString *originLang2ArrayKey;
if ([languageKey isEqualToString:@"Latin"]) originLang2ArrayKey = [originLang1ArrayKey stringByReplacingOccurrencesOfString:@"Latin" withString:@"English"];
else if ([languageKey isEqualToString:@"English"]) originLang2ArrayKey = [originLang1ArrayKey stringByReplacingOccurrencesOfString:@"English" withString:@"Latin"];
NSArray *lang2Temp = [self getWordsArrayForKey:originLang2ArrayKey];
NSString *errorWordLang2 = [lang2Temp objectAtIndex:index];
if (errorWordLang2 == nil || errorWordLang1 == nil) break;
[orderedLang2Words addObject:errorWordLang2];
[orderedLang1Words addObject:errorWordLang1];
}
}
}
}
如果您包含该plist或词典的一小部分并说出预期结果,可能会有所帮助。 – DrummerB
一个2000 for循环应该不会影响CPU时间。你有没有尝试在代码段之前和之后添加NSLog? – TheAmateurProgrammer
我看不出有什么帮助。尽管所有阵列都是我期望的阵列。它可能是2000个字,但是我做了10次,lang1Words可以高达10个。 –