
dataTblには1000件程度のデータが保存されています。
Select()で300件程度を検索して、ヒットした対象のデータの一部を変更しています。
以下がサンプルコード(モディファイしてあります。)です。
DataRow[] hitRow;
hitRow = dataTbl.Select(str);
for (int i = 0; i < hitRow.Length; i++)
{
hitRow[i][5] = "ABC"; <=== ここが遅い!!
}
Select()は頻繁に行うわけでもなく、遅いとは思っていないのですが、for文の中身で非常に時間が掛ってしまいます。約10秒程度掛ります。
これを高速化したいと考えているのですが、何か良い手はないでしょうか?
No.1ベストアンサー
- 回答日時:
データバインドしていませんか?
BindingSource のバインドを止める → SuspendBinding / ResumeBinding
コントロールの表示を止める → SuspendLayout/ResumeLayout
ありがとうございます。
SuspendBindingは気になっていたので、それ自体は止めていました。
私の質問にも問題があったのですが、上位でDataGridViewによる表示をおこなっておりました。
その結果、dataTableを変更することで、DataGridView側の表示フォーマットを変更するロジックが走ってしまっていたようです。
そういう意味では、SuspendLayoutを実施して表示を止めるようしてみたのですが、あまり効果は得られませんでした。
方向性として正しいと判断し、原因を追及したところ、Dataが更新されるたびに、DataGridView側のセルの各縦横幅を調整しに行っていたようです。
AutoSizeColumsModeおよびAutoSizeRowsModeがAllCellsになっていたことが原因でした。
これらの設定を、Noneにすると格段に速くなったのですが、表示状態が以前(AllCells)の時と比べ、異なってしまいました。
そこで、DisplayedCellsにすることで、表示上も支障なく速度の向上を得られることに成功しました。
方向性を与えて頂いてありがとう御座います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
この行は既に別のテーブルに属...
-
VB6でCSVの取込をする
-
エクセル マクロ 複数のシー...
-
C言語で2桁Hex文字列を10進...
-
不規則なデータのfft処理
-
配列でデータが入っている要素...
-
VBAを使ってOutlookメール本文...
-
Visual Basic によるNC機械制御
-
VBA 空白セルを削除ではない方...
-
Excel VBAでのオートフィルター...
-
ブレーカー落ちで壊れたりしな...
-
プログラミング python pandas ...
-
PIC12F675 キャリブレーション...
-
C#にてDropDownListの値を動的...
-
ユーザーフォームのテキストボ...
-
モジュラス103の算出方法について
-
ページ数を求めたい
-
VBで予想ソフトを作りたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
EXCELVBAでSQLserverからデータ...
-
エクセルで2つの時系列のデー...
-
ACCESS VBA インデックスが有効...
-
二分探索の平均探索回数
-
Accessで該当データにフラグを...
-
ビットシフトについて
-
Rails4 Redirect_Toで送信
-
CString型の文字列連結について
-
[C言語] コメント文字列を無視...
-
ブレーカー落ちで壊れたりしな...
-
ActiveReportについて
-
バーコードリーダーの読込デー...
-
C# でDataTableの更新を高速化...
-
プログラミング python pandas ...
おすすめ情報