* * *
アプリではよく「前回使ったIPアドレス」とか「使用するワークスペースパス」を覚えておきたいことってよくある。
方法としては構成ファイル(INIファイル)を使用したりレジストリを使用したりとあると思うけど僕は最近はMySettingsを乱用しています
(VBやC#ではINIファイルを扱うにはAPIが必要です。また、変更時にコード修正が必要で柔軟性も低くおすすめしません。個人的にINIファイルはXMLをGUIで編集するAppConfigと比べて古いやり方と思っています ・・・VS2005以降の話)
計測アプリでアルゴリズムの定数を設定画面で変更 なんて機能もMySettingsでやります
そこで疑問が2つ
1.都度読み出すのと1度メモリにコピーして読み出すのではどのくらい速度が変わるのか
2.整数でもByteとIntegerとLong、その他型によって何が変わるのか
今回は1について調査をしてみた
・事前に変数へコピーして足し算ループ、ループ内で都度Settingsを詠み出して足し算の2通り
・10000ループと1000000ループで2回ずつ試す
・関数は使用せず平たい記述とする ・・・くらいの雰囲気でやります
--------------------------------
●事前に変数へコピーして足し算ループ
プログラムはどうでもいいので画像にしました
●ループ内で都度Settingsを詠み出して足し算
●100000回
平均比較
メモリ:0.1s
都度:0.8865s
平均比較
メモリ:0.11s
都度:6.466s
とりあえず都度だと断然遅いことがわかりました
外部ファイルにアクセスする(起動時ロードしている?)MySettingsと比べて、メモリコピーのほうが断然効率のよいコードを吐き出すんじゃないかと思います
今回の条件では1ループ当たり7msecと結構な時間でした。計算などで連続して読み出す場合は一度メモリにコピーすることでだいぶ変わるようですな
ということで、夏休みの宿題は終了ぎりぎりにやったほうが早いという理論に基づいた検証でした