2

C# オブジェクトを xml ファイルにシリアル化するアプリケーションがあります。現在、.Net XmlSerializer を使用しています。

私が抱えている問題は、最大 8000 個のメイン ノード (毎回 4 ~ 10 個のサブノード) をシリアル化する必要があることです。現在、それらすべてをシリアル化するには 15 ~ 20 分ほどかかります。

ファイルは私のものとは別のプログラムによって読み取られ、ファイルの読み取り方法を変更することはできないため、同じ XML 出力を保持する必要があります。

私はいくつかの検索を行い、多くの比較を見つけましたが、それらはすべて、バイナリシリアル化を持つ protobuf-net を使用する必要があります。

私の質問は次のとおりです。このシリアル化時間をどのように改善できますか? 別のシリアライザー?モデルにさらに属性を追加します(現在、リストと同じように XmlName しかありません)。

ありがとうございました!

4

2 に答える 2

2

以下のリンクを見てください。XML シリアライゼーションのパフォーマンスを改善するためのヒントがいくつかあります。

http://msdn.microsoft.com/en-us/library/ff650685.aspx

コンポーネントのロジックを変更できる場合は、非常に大きな XML ファイルを格納するためのシリアル化が行われていないため、データベースを使用してそのような大きな XML を格納します。

于 2013-01-21T09:55:12.337 に答える
0

ボトル ネックは大きな文字列の処理である可能性があるため、FileStream に直接書き込むコードを手書きすることを検討することをお勧めします。あなたが冒険好きなら、CGbR Projectの IGenerator を書くコードを生成することもできます。ただし、これは、多くの異なるクラスがある場合にのみ意味があります。

于 2016-04-05T23:28:46.613 に答える