2011-02-07 6 views
0

XPathクエリがたくさんあるXMLドキュメントはほとんどありません。私は、XML文書を変更するために設計したアプリケーションのみを必要とします:)。私は、ドキュメントの完全性をチェックし、誰かを狙って守るための仕組みを持っています。XML解析のパフォーマンスを向上させる

ここで、C#.Netを使用したXML解析では、私が満足しているパフォーマンスは得られません。

私が持っているオプションがあります。

  1. 新しいパーサー(Even port to C++)を使用してください。
  2. スキーマを作成してください(長い時間がかかります)。それは解析のパフォーマンスを向上させるか?
  3. より多くの.Netクラスまたはライブラリで遊んでください。 XMLReaderは私が今使っているものです

誰かが、私が過ごす時間の後に私がもっと笑顔になるか教えてくれますか?

一部の情報を更新しました。 一部の/すべての属性を解析して読みたいだけです。書き込みは、私が望むものではないドキュメントを変更しています。 後でXSDサポートが必要な場合があります。 (Donnoは将来私にとって何が得られるでしょうか)

現在のパフォーマンス:50MBのXMLは1000ファイルで14秒でXMLの50 MBです。

開くには、ファイルの閉鎖はまた、私は(それが含まれている)!!推測するいくつかの時間がかかる

私は1/2この時間を探しています。

答えて

2

Improving XML Performanceはありますか?

あなたがやっていることとタイミングを正確に示すコードを見ることなく、遅いものについてコメントするのは難しいですが、遅い解析自体ではないと思われます。

+0

ありがとうございます。私はそれを読んでいて、IOのために数字を個別にプロファイリングしています。私はこれを答えとして受け入れ、質問を終わらせます。私はあまりにも大きかった。 – Vignesh

+0

この記事は2004年に書かれていることに注意してください。 – Natrium

1

Microsoftがすでに定義している場合は、新しいパーサーを作成することはお勧めしません。スキーマ(XmlSerializerを使用)を使用すると、コード処理が大幅に簡素化されます。さらに、sgen(XMLシリアライザジェネレータ)を使用すると、creates an XML serialization assembly for types in a specified assembly in order to improve the startup performance of a XmlSerializer when it serializes or deserializes objects of the specified typesを使用することができます。

さらに、xsd.exeツールを使用してxmlファイルからスキーマを生成できます。生成されたスキーマは、好みに合わせて変更できます。

詳しい情報

+0

スキーマはパフォーマンスを向上させますか?私は何も連載していない。 xsdジェネレータをありがとう。 XMLには約1000のタグと属性があります。私はスキーマを生成した後、その混乱。私はラッパーで[pugixml](http://code.google.com/p/pugixml/)を使用することを考えていました – Vignesh

+0

@Vignesh、xmlファイルのサンプルを投稿できますか? 1. xsdを使用してスキーマからクラス定義を生成する。2. XmlSerializerを使用してxmlを逆シリアル化する(xmlをメモリにロードする)。3. xml要素を使用する。 –

+1

@Vignesh、XPathはXMLをより速く検索する方法です。しかし、あなたが事前に照会したい情報の場所を知っている場合にのみ役立ちます。しかしシリアライザの前世代(sgenを使用)は、アプリケーションの起動性能を大幅に向上させることができます(ただし、メモリ消費は同じです)。 –

0

まずあなたが正しく用語 "XMLパーサー" を使用している場合、私は疑問に思います。多くの人が、解析(例えばXSLTを使って)を解析したあと、解析の一部であるかのように、XML上で行う処理に間違って参照するため、私は尋ねます。

第2に、パーサーからどのようなパフォーマンスが得られていますか、どのようなパフォーマンスが必要ですか?パフォーマンス向上のための練習は、この2つの数字から始めるべきであり、どのくらいの違いがあるかを知るまでは何も示唆がありません。

スキーマに対してソースドキュメントを検証すると、解析時間が短縮されるのではなく、一般的に時間が長くなります。

+0

私はいくつかの情報を更新しました。私はそれを解析して、xpathクエリを実行しています。今私の所見はTinyXMLであり、PugixmlにはXSDのサポートがないので、将来必要になるかもしれません。 XSDベースの検証が将来プラグイン可能かどうかを検討しています。 – Vignesh

関連する問題