投稿日 | : 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秒が限界だと結論)
ありがとうございました。
> #丸付き数字はネットでは控えましょう!
最近は「文字化け」とは無縁なので、普通に使ってしまいました。
こういう場所では控えるようにします。申し訳ありませんでした。
> 題名も変えないほうがいいでしょう
では、修正しておきます。