C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: DataGridViewのデータアクセスが初回だけ遅い


(過去ログ 139 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■81629 / inTopicNo.1)  DataGridViewのデータアクセスが初回だけ遅い
  
□投稿者/ よこしま (1回)-(2016/10/20(Thu) 20:21:49)

分類:[.NET 全般] 

DataGridViewのデータアクセスで困っています。

DataGridViewへの表示データは6万件程あるのですが、
初回のデータアクセスだけ非常に時間がかかり、
2回目からは高速でデータにアクセスできます。

データへのアクセスは、以下の様なfor文でアクセスしてます。

for (iCnt = 0; iCnt < this.dataGridView_Test.Rows.Count; iCnt++)
{
DataGridViewRow row = this.dataGridView_Test.Rows[iCnt];

for (iCnt2 = 0; iCnt2 < this.dataGridView_Test.Columns.Count; iCnt2++)
{
if (row.Cells[iCnt2].Value.ToString().Contains(strSearchVal))
{
// 処理
}
}
}

最終行データへのアクセス時間
初回 :5秒79
2回目:1秒27

この差は一体なんなのでしょうか?
ネットでいろいろと検索してもなにもヒットしません。
大変申し訳ないのですが、DataGridViewに精通している方、ご回答の程よろしくお願い致します。
引用返信 編集キー/
■81667 / inTopicNo.2)  Re[1]: DataGridViewのデータアクセスが初回だけ遅い
□投稿者/ ぶなっぷ (95回)-(2016/10/25(Tue) 15:22:02)
直接的な解答ではありませんが、
GUIを介して(DataGridView)データにアクセスしている以上、
遅くなったりしても、DataGridViewのコードはこちらにないわけなので、
どうしようもない気がします。

それよりは、DataGridViewのDataSourceに指定しているデータを直接検索
した方が速い気がします。

引用返信 編集キー/
■81668 / inTopicNo.3)  Re[1]: DataGridViewのデータアクセスが初回だけ遅い
□投稿者/ 魔界の仮面弁士 (929回)-(2016/10/25(Tue) 16:55:07)
No81629 (よこしま さん) に返信
> DataGridViewRow row = this.dataGridView_Test.Rows[iCnt];

上記などが原因で、行が非共有になってしまっているのだと思います。
データバインドしているのであれば、DataSource 側を操作するように変更してみて下さい。
https://msdn.microsoft.com/ja-jp/library/ha5xt0d9.aspx
引用返信 編集キー/
■81684 / inTopicNo.4)  Re[2]: DataGridViewのデータアクセスが初回だけ遅い
□投稿者/ よこしま (3回)-(2016/10/27(Thu) 18:00:19)
ぶなっぷさん、魔界の仮面弁士さん、
ご回答ありがとうございます。

お二方がおっしゃるように、
DataSource内を検索することで、
「初回検索時に時間がかかる」という問題を解消することができました。

自分と同じ悩みを持っている方もいるかもしれないので、
一応、ソースも載せておきます。

DataTable dt = (DataTable)dataGridView_Test.DataSource;

for (iCnt = 0; iCnt < dt.Rows.Count; iCnt++)
{
  DataRow row = dt.Rows[iCnt];

  for (iCnt2 = 0; iCnt2 < dt.Columns.Count; iCnt2++)
  {
    if (row[iCnt2].ToString().Contains(strSearchVal))
    {
      // 処理

    }

  }
}

最終行データ(60000行目)へのアクセス時間
<前回>
初回検索時間 :5秒79
2回目検索時間:1秒27

↓ DataSource内を検索すると

<今回>
初回検索時間 :0秒55
2回目検索時間:0秒49

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -