技術の覚書
New Entry
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
DataTableはサーバーデータをクライアントのメモリ内に落としこむため、落とすまでに時間を要する。
しかし、落とした後はオンメモリーとなるため、ループ処理(フェッチ)は非常に高速となる。
一方、DataReaderは都度(行、カラム単位)サーバーへデータの問い合わせを行うため、限定されたデータを取得する場合は非常に高速である。
上記、2種類の手法の使い分けは、データを使い回す:DataTableか、回さない:DataReaderかで判断すると良い。
しかし、落とした後はオンメモリーとなるため、ループ処理(フェッチ)は非常に高速となる。
一方、DataReaderは都度(行、カラム単位)サーバーへデータの問い合わせを行うため、限定されたデータを取得する場合は非常に高速である。
上記、2種類の手法の使い分けは、データを使い回す:DataTableか、回さない:DataReaderかで判断すると良い。
PR
KEY項目を抽出条件として項目の取得をする場合は、DataViewのRowfilterよりもDataTableのSelectの方が高速
文字列を「+=」で連結するとレスポンスが悪くなる。
ループ処理で文字列連結を行う場合はStringBuilderクラスのAppendメソッドを使用する。
特に、大量のデータを連結するとレスポンスが顕著に現れる。
【例】
string s = "1";
s += "2";
s += "3";
上記では順番に"1","2","12","3","123"という5回メモリの確保が行われる。
StringBuilder s = new StringBuilder("1");
s.Append("2");
s.Append("3");
s.ToString();
上記では順番に"1","2","3","123"となり回数+1回のメモリ確保が行われる。
故にstringの+=はStringBilderに比べ倍のメモリ確保が行われることとなる。
ループ処理で文字列連結を行う場合はStringBuilderクラスのAppendメソッドを使用する。
特に、大量のデータを連結するとレスポンスが顕著に現れる。
【例】
string s = "1";
s += "2";
s += "3";
上記では順番に"1","2","12","3","123"という5回メモリの確保が行われる。
StringBuilder s = new StringBuilder("1");
s.Append("2");
s.Append("3");
s.ToString();
上記では順番に"1","2","3","123"となり回数+1回のメモリ確保が行われる。
故にstringの+=はStringBilderに比べ倍のメモリ確保が行われることとなる。
前のページ << |