DataSetにXMLを取り込む
XMLを取得
DataSetにXMLファイルを読込んで使う事なんて滅多に業務的に無い為メモ
VB.NET
Using ds As DataSet = New DataSet Dim dt As DataTable = New DataTable(tabelname) Dim xmlSR As System.IO.StreamReader _ = New System.IO.StreamReader(filepath & xmlName) For Each dt In ds.Tables dt.BeginLoadData() Next ds.ReadXml(xmlSR) dt = ds.Tables(0) For Each dt In ds.Tables dt.EndLoadData() Next End Using
C#
using (DataSet ds = new DataSet()) { DataTable dt = new DataTable(tabelname); System.IO.StreamReader xmlSR = new System.IO.StreamReader(filepath + xmlName); foreach ( dt in ds.Tables) { dt.BeginLoadData(); } ds.ReadXml(xmlSR); dt = ds.Tables(0); foreach ( dt in ds.Tables) { dt.EndLoadData(); } }
DataSet ビジュアライザで確認
実際に確認してみたらいい感じ。
非常に大きなファイルを読み込む際に ReadXml を呼び出すと、パフォーマンスが低下することがあります。大きなファイルを読み込む場合に、ReadXml のパフォーマンスを最大にするには、DataSet のテーブルごとに BeginLoadData メソッドを呼び出し、その後で ReadXml を呼び出します。最後に、次の例に示すように、DataSet のテーブルごとに EndLoadData を呼び出します。
どんくらいの大量のデータやねんってことで調べた。
とりあえず1000件のデータを作成しstopwatchクラスで時間計測!
BeginLoadData EndLoadData有り Time is : 00:00:00.0227109 はえー・・。
BeginLoadData EndLoadData無し Time is : 00:00:00.0192091 あるぇー・・。
データがたりんのね。
10000件
BeginLoadData EndLoadData有り Time is : 00:00:00.1380896 ?
BeginLoadData EndLoadData無し Time is : 00:00:00.1264850 ?
100000件
BeginLoadData EndLoadData有り Time is : 00:00:01.3964389 ?
BeginLoadData EndLoadData無し Time is : 00:00:01.7707770 ?
び・・微妙な差が・・・。
1000000件 私のエディタの限界。
BeginLoadData EndLoadData有り Time is : 00:00:14.5700241
BeginLoadData EndLoadData無し Time is : 00:00:14.7292566
・・・・あれ・・?
・・・・・・・・
MA SA KA!!!
0 件のコメント:
コメントを投稿