いつもお世話になっています。(環境 XP VB6.0)
VBの書き方で質問です。
「実行中のメモリ使用量は少ないほうが良い」というなんとなく根拠のない
セオリを自分なりに気をつけてプログラムを書くよう心がけていますが、次
のような書き方(スタイルAとB)ではどちらが少なくすむものなのでしょ
うか。
見やすさ、メンテナンスの観点ではAだと思うのですが、Bの方がメモリは
少なくてすむのかなあって思い質問させていただきました。
'============================
' スタイルA
'============================
'メインの処理
Private Sub Command1_Click()
Call 処理1
Call 処理2
' ・
' ・
Call 処理N
End Sub
'処理1
Private 処理1
Dim メモリ1(5000) As String
Dim メモリ2(5000) As String
'処理・・・・・
End Sub
'処理2
Private 処理2
Dim メモリ1(5000) As String
Dim メモリ2(5000) As String
'処理・・・・・
End Sub
'============================
' スタイルB
'============================
'メインの処理
Private Sub Command1_Click()
Dim メモリ1(5000) As String
Dim メモリ2(5000) As String
'処理1・・・・・
'処理2・・・・・
'処理N・・・・・
End Sub
よろしくお願いします。
Option ExplicitでPrivate宣言でいいんじゃない?
スタイルA:
・全ての処理に共有されないメモリ1とメモリ2が存在する
スタイルB:
・全ての処理に共有されるメモリ1とメモリ2が存在する
もうどっちがどうとかじゃなくて、どっちも違う挙動になるかと。
名無しさん・ガッさん ご回答ありがとうございます。
>もうどっちがどうとかじゃなくて、どっちも違う挙動になるかと。
質問のしかたが悪かったのでしょうか。どちらも同じ動作をします。
知りたかったのはメモリは変数を宣言した時点で確保されるのか使用
する度に確保されるのかっていうことなんですが、タスクマネージャ
で調べようと思いますが、表示設定でできるのでしょうか?
パフォーマンスの標準表示ではCPUとページファイルの使用率だけ
なので・・・。
> 質問のしかたが悪かったのでしょうか。どちらも同じ動作をします。
そうでしたか…まぁ、テストコードであって意味のないコードだということで捉えておきます。
> 知りたかったのはメモリは変数を宣言した時点で確保されるのか
> 使用する度に確保されるのかっていうことなんですが
※変数を宣言した時点=コーディング中?
使用する度に=Dimステートメントが実行されるとき?
→言い回しが微妙ですが、
勝手に「実行時にDimステートメントを表すコードが実行されるとき」
としました。
VB6は通常ネイティブコードを吐き出します。
Dim メモリ1(5000)
というステートメントがあったとして、
コンパイラが忠実にコードを機械語にしてくれたならメモリを実際に確保するコードに翻訳してくれるはずです。
つまり、書いた分だけメモリ確保をしてくれると思います。
…しかし実際は最適化するので「こういうコードになる」という風に決められるものではなくて(orz
きっといい様にやってくれるはずです。
どっちにしても同じだけ確保するんだからという意味で全体宣言してしまえば?と書きました
どっちでも変わらないと思うので
最初から5000確保するか、ReDimを使うかという場合なら比較し甲斐があるかも
名無しさん・ガッさん ありがとうございました。
メモリとは何ぞや?から勉強しなおします。
ツイート | ![]() |