My Setting速度確認Part1 都度読出しにかかる時間を調べる | 遥かなるひよこ道
MySettingsってなんやってひとはここを見るといいです dobon.net
   *   *   *

アプリではよく「前回使った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

10000021000001

●1000000回
 平均比較
  メモリ:0.11s
  都度:6.466s

1000000210000002


とりあえず都度だと断然遅いことがわかりました
外部ファイルにアクセスする(起動時ロードしている?)MySettingsと比べて、メモリコピーのほうが断然効率のよいコードを吐き出すんじゃないかと思います


今回の条件では1ループ当たり7msecと結構な時間でした。計算などで連続して読み出す場合は一度メモリにコピーすることでだいぶ変わるようですな
ということで、夏休みの宿題は終了ぎりぎりにやったほうが早いという理論に基づいた検証でした