私はPlace
オブジェクトの配列を持っています。それぞれのPlace
オブジェクトには、両方ともname
とcode
というプロパティがあります。各Place
オブジェクトには既にcode
が含まれていますが、サーバーからname
プロパティを検索する必要があります。私は2つの配列を返します:1つは名前、他のコードを含みます。これらの配列は、nameArray
のあるインデックスのname
がcodeArray
の同じインデックスのcode
と正確に一致するように順序付けられています。文字列を比較/設定する最速の方法
私は、そのPlace
ためcode
プロパティはcodeArray
における現在のインデックスと同じであるかどうかをチェックする、Place
オブジェクトの配列をループされています。もしそうであれば、私はnameArray
で同じインデックスを使用して、そのPlace
のname
を設定します。
for(int i = 0; i < [placesArray count]; i++)
{
for(int j = 0; j < [codeArray count]; j++) {
if([[[placesArray objectAtIndex:i] code] isEqualToString:[codeArray objectAtIndex:j]]) {
[[placesArray objectAtIndex:i] setName:[nameArray objectAtIndex:j]];
}
}
}
これは動作しますが、ひどく速くない - それはをループに1000の+の場所で30秒かかることがあります。
速い方法がありますか?あなたは、パフォーマンスを最適化しようとしていると同じように、いつでもあなたがNSArrayの-containsObject
if ([myarray containsObject:myObject]) {
// ...
}
私はすでにこれをプロファイリングして、 'isEqualToString:'がたくさん呼ばれているのを見ました。私はあなたのソリューションを試してみたところ、パフォーマンスが〜96%向上しました。あなたはアンドリューを揺する。 – colby