アプリケーションで特定のコードを実行すると、CPU使用率が異常に高くなっています。インスツルメンツによると、NSString
のrangeOfString:
メソッドがこれを引き起こします。私は実際にする必要があるので、さまざまなfor
ループでこのメソッドを非常に頻繁に使用します。rangeOfString:高いCPU使用率
私の質問は次のとおりです。これをどのように解決できますか?インストゥルメントは問題の原因がどこにあるのかを教えてくれますが、このコードは別のフレームワークにあるため、これは限られています。私がrangeOfString:
の原因となっていることは分かっていますが、代替CPUを保存したままで回避する方法はわかりません。あなたが唯一のホスト名の部分でテストを行ってから何かを得ることができると私には思える、最適化が常に妥協している免責事項
- (NSArray *)resultStrings
{
NSMutableArray*_output = [[NSMutableArray alloc] init];
UsageHistory*_history = [[UsageHistory alloc] init];
NSHTTPCookieStorage*storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSArray*UsageHistoryArray = [[NSArray alloc] initWithArray:[_history usageHistory]];
NSArray*_storageCookies = [[NSArray alloc] initWithArray:[storage cookies]];
for (DAHistoryObject*object in UsageHistoryArray)
{
for (NSHTTPCookie*ck in _storageCookies)
{
@autoreleasepool
{
NSString*domain = [ck domain];
if ([[[ck domain] substringToIndex:1] isEqualToString:@"."])
{
domain = [[ck domain] stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:@""];
}
if ([[object url] rangeOfString:domain].location != NSNotFound)
{
NSHTTPCookie*cookie = [DAHTTPCookie createCookieWithURL:[ck domain] cookieName:[ck name] expires:[[ck expiresDate] timeIntervalSince1970] cookieValue:[ck value] browserType:DARavenBrowser secure:[ck isSecure]];
[_output addObject:cookie];
}
}
}
}
[UsageHistoryArray release];
[_storageCookies release];
[_history release];
return [_output autorelease];
}
あなたは右の最適化が常に妥協であり、それはうまくいきました。あなたのアイデアは約5〜10%のマイナーな改善を提供しますが、それでも私は93%のアイディアになります。 – Pripyat
Theresまだドメインは大文字と小文字を区別しません。 – JeremyP