VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/03/04(Thu) 14:13
投稿者Eclipse
Eメール
URL
タイトルRe^2: リストボックスへの高速追加

> List1へ追加する大元のデータはどこから集めているのでしょうか?
ただのテキストファイルです。

> そこは遅くなく、ListBoxにAddItemで追加するところが遅い、
> ということは調査してはっきりさせているのでしょうか?
はっきりしているので質問しているのですが...
  
> SendMessageを使って何のメッセージを送っているのですか?
SendMessage(List1.hWnd, WM_SETREDRAW, 0, ByVal &H0) '画面の更新を停止
SendMessage(List1.hWnd, WM_SETREDRAW, 0, ByVal &H0) '画面の更新を再開
結局、List1.Visible = False にしているので意味はないのですが。

> 純粋にListBoxにAddItemしているだけなんでしょうか?
そうですね、あまり余計なことをするのは処理が遅くなる原因となるので。

> 何件のデータでどういうスペックのマシンで3秒なんでしょうか?
スペック:CPU=Pen4 1.8GHz, MEMORY=512MB, HDD=空き容量十分
まあ、スペックのせいで遅いわけではないですね。
件数は23,000件くらいですね。
ちなみに、投稿する前に色々調べてみましたが、
追加速度は、件数というより1件あたりの文字数の方に左右されるようです。
文字数は、ばらつきがありますが、全角25文字くらいでしょうか。

> 現在のコードはどんなコードを書かれているのですか?
> 純粋にAddItemしているだけであれば、それ以上はどうしようもないような・・・
> 一度に追加する項目数を制限しましょう。
私の職業はプログラマで、C出身者なのですが。VBは始めたばかりなのです。
投稿する以上、最低限やるべきこと(自分なりの調査)は、やっています。(最低限の礼儀ですが)
そのため、自分の中で考えがまとまりすぎていて、ここへ書き込む内容も要約されすぎていたようです。
ご迷惑をおかけしました。

どんな方法で今やっているかと言うと、

「C++でテキストファイルを読み込むDLLを作って、高速に絞込み検索してその結果をVBへ返す」

その前にVBだけで色々やったのですが、これが1番早かったです。

このDLLは0.2秒くらいでVBへ結果を返してくれています。
やはり、VBの「AddItemメソッドが遅すぎ」としか思えません。
ですから、ListBoxに高速にデータを追加する方法についてだけお聞きしたのです。
説明不足で申し訳ありませんでした。

やはりしょうがなさそうですね。
件数を絞り込むわけにはいかないので、このまま導入します。(まあ3秒が限界だと結論)
ありがとうございました。

> #丸付き数字はネットでは控えましょう!
最近は「文字化け」とは無縁なので、普通に使ってしまいました。
こういう場所では控えるようにします。申し訳ありませんでした。

> 題名も変えないほうがいいでしょう
では、修正しておきます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -