0
나는 나를 위해 plist에 맞는 단어를 찾아 그들을 필터링 루프를 잔뜩 있습니다. 그러나, 매우 천천히, plist에 총 약 2000 단어가 있습니다. 아래의 코드를 참조하십시오,이 속도를 빨라야합니다. 약 2-3 초의 지연이 발생합니다! 내가 어떻게 할 수 있는지 잘 모르겠다.중첩 된 For 루프를 빠르게하려면?
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만큼 높을 수 있습니다. –