掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リストビューの表示を高速化するには? (ID:54530)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
シャノン様、たく様貴重なご意見ありがとうございました。 お二人の意見を参考にいろいろ試してみました。その結果をご報告します。 ・選定したコンテナは適切か? 挿入はリストの最後尾、削除は先頭で起こります。現在作成しているものはソート、検索をする必要が無いため、ランダムアクセスする必要が無いと判断しました。そこでCArrayを用い、リングバッファを作成し、削除の処理を省きました。 (すいません、コンテナがよくわかりません。) ・選定したソート方法は適切か? ソートの必要はありません。 ・冗長な処理はないか? 受信中に、余分な処理を削除しました。受信間隔でデータ更新処理(CArrayにデータを積むだけ)は終わっています。 (いまさらで申し訳ありませんが、ちなみに受信間隔は2msecです。) いろいろ試行錯誤したのですが、私の結論としましては再描画に時間がかかっているのかと思いました。それというのも、 GetDispInfoではCArrayからデータを加工して表示するようにしていました。そこでDEBUGとして直値を表示してすぐ処理を返すようにしてみたのですが、それでもCPU使用率が100%まで上がってしまいます。 1万件に達するまでは仮想リストビューによりSetItemCountExを用い1行表示して、1行分スクロールさせている為、CPU使用率が跳ね上がることがありません。1万件に達した時はリングバッファ上では先頭データに追加、仮想リストビュー上では先頭データの削除、最後尾にデータ追加なのでRedrawItemsを用い、画面に表示されているリストを再描画させています。その為、画面に表示されている分を描画させる時間がかかっているのだと判断しました。(実際にCPU使用率は、1万件に達するまでのCPU使用率に画面に表示されているデータ数分掛け算したぐらいでした。) 再描画によりCPU使用率が上がり、その間もデータを受信しているため、1万件を超えると、データが溜まっているのだと思います。 今回の対応方法としまして、Timerを用い更新周期で描画するようにしました。この対応により、CPU使用率が跳ね上がることもなく、受信も溜まらなくなりました。 まだまだわからないことが多く、毎日勉強です。今回は一応上記の対応を取りましたが、もしよろしければ今後の勉強の為、私の取った方法についてお二人の意見をお聞かせください。 いろいろありがとうございました。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.