私は電話でアプリケーションを持っており、約50ページのXMLが必要です。各XMLには約100のノードがあります。あなたが約5,000のノードである数学を行うならば、私は解析しています。これらのノードが同じように設定されていないことがあります。例:おそらく75%が他の25%と異なるスキーマを持っているので、これを処理して別々に解析するコードがあります。WP7でのXMLパフォーマンスの最適化のヒント
httpコールを最適化することはできません。ウェブサービスは一度に100個の「アイテム」しか配信しないので、基本的にはすべてのページを取得するために50回Webサービスをヒットする必要があります。データ。ここに高レベルのプロセスがあります。
Call web service (webclient) Parse XML (take note total pages in xml. it will say Page 1 of 100) Add results to collection Call web service again for page 2 Parse Add results to collection ....rinse and repeat 100 times.
私が最適化できる唯一の場所は、解析コードです。私がやっているのは、linqを使ってXMLを解析し、IEnumerable内のノードを分離し、それらを解析して、私が作成したカスタムオブジェクトに配置することです。私は、このプロセス全体を最適化する方法に関するいくつかの高いレベルのアイデアを探しています。たぶん私は何かが欠けているでしょう。
いくつかのコードはちょうど1000回以上と同じように、以下のことを想像してください。より多くの属性を使用すると、これは小さな例です。ほとんどの場合、解析が必要な30の属性があります。実際のスキーマにはアクセスできず、スキーマの変更は制御できません。
XElement eventData = XElement.Parse(e.Result);
IEnumerable<XElement> feed =
(eventData.Element("results").Elements("event").Select(el => el)).Distinct();
foreach (XElement el in feed)
{
_brokenItem = el.ToString();
thisFeeditem.InternalGuid = Guid.NewGuid().ToString();
thisFeeditem.ServiceIcon = GetServiceIcon(thisFeeditem.ServiceType);
thisFeeditem.Description = el.Attribute("displayName").Value;
thisFeeditem.EventURL = el.Attribute("uri").Value;
thisFeeditem.Guid = el.Attribute("id").Value;
thisFeeditem.Latitude = el.Element("venue").Attribute("lat").Value;
thisFeeditem.Longitude = el.Element("venue").Attribute("lng").Value;
}
(1)は、これが呼び出されるたびに異なるサービスから取得したXMLです。何も変更されていない時間があります。(2)あなたは、サービスの振る舞い? –
あなたの解析のコードサンプルが役に立ちます。 –
私は家に帰るときに質問に答えるためにいくつかのコードを追加します。私はそのサービスを支配していない。私は、ページされたバージョンよりも巨大な単一のXMLを好むだろう。私はAPIがページング用のWebページ用に設計されたものであり、太ったクライアント用ではないと感じています。第二に、結果はページごとに異なります。 – firebellys