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

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

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

Re[2]: ImageListで大量イメージを扱う際のパフォーマンス劣化


(過去ログ 106 を表示中)

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

■63353 / inTopicNo.1)  ImageListで大量イメージを扱う際のパフォーマンス劣化
  
□投稿者/ あさくら (1回)-(2012/08/19(Sun) 13:34:56)

分類:[.NET 全般] 

お世話になります。あさくらと申します。

VB2005で、簡単な画像ビューワを作る上で、
フォルダ配下の画像を全て検出し、サムネイル画像を表示する、
という機能を作りこんでいるのですが、
フォルダに大量の画像ファイルが存在する場合、パフォーマンスが著しく劣化するようで、困っています。


ストップウォッチクラスを使用して、ボトルネックを探してみたところ、
どうやらImageListに画像をAddする部分が遅いということが分かりました。


Dim sw As New System.Diagnostics.Stopwatch()
'ストップウォッチを開始する
sw.Start()

' イメージリストに登録されていないアイコンを取得
LargeImageList.Images.Add("ファイルパス", "サムネイルイメージ")


'ストップウォッチを止める
sw.Stop()

'結果を表示する
Debug.Print(sw.Elapsed.Milliseconds)

最初のうちは、Addにかかる時間は1ミリ秒前後なのですが、
扱うファイルが500を超えるあたりから劣化が体感できるようになり(約30ミリ秒)
1000になると無視できないほど遅くなります(約100ミリ秒)

タスクマネージャでメモリ使用量を見てみましたが、使用領域は増えていくものの、
常識的な範疇で、PC全体のパフォーマンスが劣化しているようには見えません。


このような現象をご存知の方はいらっしゃいますでしょうか?
できれば、対処法を知りたいのですが、ネットを検索してもImageListの使用法しか見つからないので質問させていただきました。
よろしくお願いします。
引用返信 編集キー/
■63360 / inTopicNo.2)  Re[1]: ImageListで大量イメージを扱う際のパフォーマンス劣化
□投稿者/ shu (35回)-(2012/08/20(Mon) 17:54:05)
No63353 (あさくら さん) に返信

Dobonさんの過去ログより
http://dobon.net/vb/bbs/log3-35/21547.html

によるとOwnerDrawによりImageListを使った画像管理を避けるという結論になっています。
引用返信 編集キー/
■63361 / inTopicNo.3)  Re[2]: ImageListで大量イメージを扱う際のパフォーマンス劣化
□投稿者/ あさくら (2回)-(2012/08/20(Mon) 22:20:35)
No63360 (shu さん) に返信

shu 様

まさに私が欲していた情報です。大変助かります。

現在サンプルコードを見ていますが、これなら実装できそうです。
ありがとうございました!


しかし、ImageListへの画像のAddよりも、DictionaryへのAdd+OwnerDrawが早いとは… ^^;

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -