質問編集履歴

3

ソースコードの追記

2021/01/10 13:30

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
File without changes
test CHANGED
@@ -26,6 +26,8 @@
26
26
 
27
27
  Dim fs As FileStream
28
28
 
29
+  Dim adress(10, 10) As String
30
+
29
31
  'Stopwatchオブジェクトを作成する
30
32
 
31
33
  Dim sw As New System.Diagnostics.Stopwatch()
@@ -38,7 +40,7 @@
38
40
 
39
41
  for i = 0 to 10
40
42
 
41
- 'DBからファイルパスを取得する
43
+ 'DBからファイルパスを取得する
42
44
 
43
45
  adress(i, j) = command.ExecuteScalar()
44
46
 
@@ -69,6 +71,8 @@
69
71
  for i = 0 to 10
70
72
 
71
73
  for i = 0 to 10
74
+
75
+ '取得したファイルパスから描画を行う。
72
76
 
73
77
  Me.bihin(i, j) = New System.Windows.Forms.PictureBox()
74
78
 

2

計測したコードについて追記しました。

2021/01/10 13:30

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
File without changes
test CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  以下のソースコードのようにして、New句でpictureboxのインスタンスを複数個作っています。
6
6
 
7
- しかし、この動作が少々重く、5秒くらいかかっています。(画像を描写する処理しかないので、計測はしていません。)
7
+ しかし、この動作が少々重く、5秒くらいかかっています。
8
8
 
9
-
9
+ (レイアウトオブジェクトを生成するコードについては割愛します。)
10
10
 
11
11
 
12
12
 
@@ -26,13 +26,49 @@
26
26
 
27
27
  Dim fs As FileStream
28
28
 
29
+ 'Stopwatchオブジェクトを作成する
30
+
31
+ Dim sw As New System.Diagnostics.Stopwatch()
32
+
33
+ 'ストップウォッチを開始する
34
+
35
+ sw.Start()
36
+
37
+ for i = 0 to 10
38
+
39
+ for i = 0 to 10
40
+
41
+ 'DBからファイルパスを取得する
42
+
43
+ adress(i, j) = command.ExecuteScalar()
44
+
45
+ Next
46
+
47
+ Next
48
+
49
+
50
+
51
+ 'ストップウォッチを止める
52
+
53
+ sw.Stop()
54
+
55
+ '結果を表示する
56
+
57
+ Console.WriteLine("DBからの読み取り時間は")
58
+
59
+ Console.WriteLine(sw.Elapsed)
60
+
61
+ 'ストップウォッチをリセットしてから再開する
62
+
63
+ sw.Reset()
64
+
65
+ sw.Start()
66
+
67
+
68
+
29
69
  for i = 0 to 10
30
70
 
31
71
  for i = 0 to 10
32
-
33
- 'DBで画像のアドレスを持ってくる
34
-
35
-
36
72
 
37
73
  Me.bihin(i, j) = New System.Windows.Forms.PictureBox()
38
74
 
@@ -47,6 +83,16 @@
47
83
  Next
48
84
 
49
85
  Next
86
+
87
+ 'ストップウォッチを止める
88
+
89
+ sw.Stop()
90
+
91
+ '結果を表示する
92
+
93
+ Console.WriteLine("描画にかかる時間は")
94
+
95
+ Console.WriteLine(sw.Elapsed)
50
96
 
51
97
  End Class
52
98
 
@@ -70,7 +116,7 @@
70
116
 
71
117
  前回の質問の時から、計測をするように回答してくださっていた方、ご忠告に従わず失礼しました。
72
118
 
73
- YAmagaGNZさんの回答への返信でも書きましたが、重い腰を上げて計測を行った結果を以下に報告します。
119
+ YAmaGNZさんの回答への返信でも書きましたが、重い腰を上げて計測を行った結果を以下に報告します。
74
120
 
75
121
  1. その他レイアウトオブジェクトの生成など: 0.00257s
76
122
 

1

計測したデータを追記

2021/01/10 13:26

投稿

hanbee.com
hanbee.com

スコア52

test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,31 @@
61
61
  なんとなくイメージはできるのですが、実際に参考になるソースコードが分からず、、困っています。
62
62
 
63
63
  参考にできるサイトの紹介とかだけでもいいので、宜しくお願い致します。
64
+
65
+
66
+
67
+
68
+
69
+ 〇追記
70
+
71
+ 前回の質問の時から、計測をするように回答してくださっていた方、ご忠告に従わず失礼しました。
72
+
73
+ YAmagaGNZさんの回答への返信でも書きましたが、重い腰を上げて計測を行った結果を以下に報告します。
74
+
75
+ 1. その他レイアウトオブジェクトの生成など: 0.00257s
76
+
77
+ 2. DBから画像ファイルパスなどの読み出し:0.0129663s
78
+
79
+ 3. 画像ファイルパスからimageプロパティに変換してpictureboxに描画:0.0069787s
80
+
81
+ 4. loadイベント全体でかかった時間: 0.0217302s
82
+
83
+ 以上の結果でした。
84
+
85
+ これは割と性能のいいノートPCで行っているため、処理が速いですが、実際にこのアプリ用に使っている
86
+
87
+ タブレット端末は中古品で性能も悪く、5秒くらいかかってしまっています。
88
+
89
+ やはり、Bitmapクラスを読み込んでクラスメンバとして保持するクラスを用意していおいて全ての画像を読み込んでおけば項番2,3の動作が速くなると思います。(DBからファイルパスを持ってきて、imageプロパティに変換するというのを全部EXE起動時にやっておいた方が速くなると思います。)
90
+
91
+ なので、もっと速くする余地はありそうなので、これらのプログラム修正を行っていきたいと思います。