DLL にベースアドレスを設定してみた

ソフト起動時に読み込む DLL の数が増えてきて、起動に時間がかかるようになっていたので、この間知ったベースアドレスをそれぞれの DLL に設定してみたところ、結構ロードが早くなった模様。起動→ DLL ロード→スプラッシュ画面表示、とった流れで起動するので、普通に使っている分にはスプラッシュ画面が占有している時間が長いのでそれほど変わった感じはありませんが、イベントログなどを見ていると確実に早くなっているのがわかります。これからさらに DLL も増えるでしょうが、その時に効果を発揮してくれそうです。

ベースアドレスの設定には Platform SDK に付属している ReBase.exe を使用しました。 CUI なので、コマンドプロンプトからえいやっとコマンドを入力するだけで簡単設定。

rebase.exe /b 0x60000000 *.dll

DLL が複数あるときにはワイルドカードで指定すると、カレントフォルダの中の全ての DLL に 0x60000000 (コマンドラインで指定したアドレス) から順に設定していってくれるようです。便利。最初 Ruby 使って DLL ひとつひとつにアドレス設定していくスクリプトを書かなきゃいけないかな、とか考えていましたが、そんな必要はなかったようです。