読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマーをやっています。好きなツール:WorkFlowy、好きな言語:C#、好きなサービス:Backlog、好きなAWS:AWS Lambda。

DataTableの行数参照の処理時間を検証する

MSDNフォーラムの以下の投稿に基づいた検証の続きです。
DBのテーブルからレコード数によって文字列として作成し利用する方法
たとえばテーブルに レコードが3レコードあるとき , 1 TIME, 2 TIME, 3 TIME レコードが5レコードあるとき , 1 TIME, 2 TIME, 3 TIME, 4 TIME, 5 TIME というように 文字列を作成するにはどのような方法があるでしょうか? ...

今度はDataTableの行数参照の処理時間を検証します。以下のコードで「行数の参照処理」を変更して検証を行います。

DataSet ds = new DataSet();
DataTable dt = ds.Tables.Add("table");
dt.Columns.Add();
for (int i = 0; i < 100000; i++) {
    dt.Rows.Add("hoge");
}

Stopwatch w = new Stopwatch();
w.Start();

/*
 * 行数の参照処理
 */

w.Stop();

Console.WriteLine("経過時間:{0}ミリ秒", w.ElapsedMilliseconds);

プロパティを直接参照

int count;
for (int i = 0; i < 1000000; i++) {
    count = ds.Tables["table"].Rows.Count;		 
}

結果は513ミリ秒でした。

変数に取得して参照

int rowCount = ds.Tables["table"].Rows.Count;
int count;
for (int i = 0; i < 1000000; i++) {
    count = rowCount;		 
}

結果は5ミリ秒でした。

検証結果

一度変数に取得した方が速いです。