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 件のコメント:
コメントを投稿