【ASP.NET】DataSet.ReadXml()のパフォーマンス向上(巨大xmlファイルの読込高速化)
ADO.NETでxmlファイルを読み込み、DataSetに格納するには、DataSet.ReadXml()を使用すると便利だが、xmlファイルが巨大化すると、時としてかなりのパフォーマンス低下が生じる。
なんかいい方法はないかといろいろ調べていたら、msdnにまさにドンぴしゃりの記事を見つけたのでメモ。
非常に大きなファイルを読み込む際に ReadXml を呼び出すと、パフォーマンスが低下することがあります。大きなファイルを読み込む場合に、ReadXml のパフォーマンスを最大にするには、DataSet のテーブルごとに BeginLoadData メソッドを呼び出し、その後で ReadXml を呼び出します。最後に、次の例に示すように、DataSet のテーブルごとに EndLoadData を呼び出します。
以下の様に、DataSet.ReadXmlの前後で、BeginLoadDataメソッドとEndLoadDataメソッドを使用して処理する。
foreach (DataTable dataTable in dataSet.Tables)
dataTable.BeginLoadData();
dataSet.ReadXml("file.xml");
foreach (DataTable dataTable in dataSet.Tables)
dataTable.EndLoadData();
これでかなり大きなxmlファイルを使用するのでもものすごくパフォーマンスが向上し、読込速度が数段上がった。
BeginLoadData メソッド、EndLoadData メソッドは以下のような関数である。
DataTable.BeginLoadData メソッド
データを読み込む間、通知、インデックスの維持、および制約をオフにします。DataTable.EndLoadData メソッド
データを読み込んだ後、通知、インデックスの維持、および制約をオンにします。
著者/訳者:山田 祥寛
出版社:翔泳社( 2004-10 )
定価:¥ 2,625
Amazon価格:¥ 2,625
単行本 ( 297 ページ )
ISBN-10 : 4798104876
ISBN-13 : 9784798104874



