加速嵌套循环?

时间:2012-10-13 12:45:42

标签: iphone objective-c ipad loops nested

我有一堆循环,在我的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];
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您应该使用Instruments(专门用于时间配置文件)进行配置,然后发布保存的配置文件,我们可以查看并提供建议。没有探查器进行优化就像是用眼罩进行目标射击。