0

xml doc の解析中に、複数の if-else を使用してデータ タグを解析しました。forループでも同じことができます。しかし、パフォーマンスが向上するので、どちらを使用するかについて混乱しています。どちらが速いですか?

//Parsing with If-Else

if(element.name isEqualToString:@"String1") {
object.id = [element.value intValue];
}
if(element.name isEqualToString:@"String2") {
object.name = element.value;
}
if(element.name isEqualToString:@"String3") {
object.address = element.value;
}
.....

// OR Parsing with for loop

for(NSString * str in NSArray) {
[dict setObject:element.value forKey:element.name];// This will add parsing element in dict
}

//Use the dictionary to show data later
4

2 に答える 2

1

キー ハッシュを使用するため、ディクショナリの検索が高速になります。とはいえ、コードを最適化する前に、常にコードをプロファイリングする必要があります。

個人的には、あまりありふれたコードではない辞書アプローチが好きです。さらに、要素名を目的の辞書キーに簡単にマップできます。

NSDictionary *keySubstitutions = { @"String1" : @"id", @"String2" : @"name", ... };

for(NSXMLElement * element in elements) {
    id key = keySubstitutions[element.name];
    if (key)
        dict[key] = element.value;
    // else the element name is not supported
}
于 2012-09-10T05:08:46.297 に答える
0

これは、コード構造に関する問題であると同時に、表現に関する問題でもあります。名前付きプロパティを持つオブジェクトは if-elseif 構造を強く示唆し、辞書はループを強く示唆します。

XML (およびそれに類するものすべて) は、名前と値の表現と完全に対になっています。タグは名前で、タグ本体は値です。

ディクショナリは進むべき道であり、したがってループもそうです。これは、NS パーサーだけでなく、私が考えることができるサードパーティによって行われた選択です。

于 2012-09-10T04:24:49.040 に答える