2

サイズが約2MBのHttp応答ドキュメント内の1つのXML要素のみを処理し、要素内にあるものをクライアントに返す必要があるサーブレットがあります。現在私はこれをやっています

    if (response.indexOf("<?xml") != -1
                && response.indexOf("</Data>") != -1) {
            return response.substring(response.indexOf("<?xml"),
                    response.indexOf("</Data>") + 7);

これがタグを検索する最も効率的な方法なのか、それとももっと良いアプローチが利用できるのか疑問に思っています。

4

1 に答える 1

1

IndexOf途中で見つかる唯一の「誤った開始」</Data>は終了タグであり<?xml、ファイルの先頭に非常に近いため、アルゴリズムを大幅に高速化できる可能性はほとんどありません。

IndexOfコードを高速化する1つの方法は、複数回の呼び出しを避けることです。

int idxXml = response.indexOf("<?xml");
int idxData = response.indexOf("</Data>");
if (idxXml != -1 && idxData != -1) {
    return response.substring(idxXml, idxData+7);
}
于 2013-03-26T03:56:22.463 に答える