RAD Studio XE3 の IDE 起動時間をどうにかしたい!
RAD Studio XE3 の起動速度は遅い
ははは。RT XE3 IDE startup is extremely slow comparing to XE2 and previous http://t.co/yXTRkDxL
2012-09-12 08:57:07たしかに XE3 の起動は遅い。embarcadero の開発者は SSD を使ってるのではないか。SSD マシンだとあまり気にならないな…会社の HDD だと気になるけど!
2012-09-12 09:19:42@ran_bousyo @pik 雑談 (http://t.co/bPnMFqBd) でも書きましたが、DLL プリローダとかでは解消できないものでしょうかね?
2012-09-12 09:34:24@ht_deko @pik そうですね。チェックするなとは言いませんが、とってつけた様な乱暴な方法で、delphi2005以来の起動速度向上の苦闘を台無しにするようなことは止めてほしいですね。
2012-09-12 09:39:58なんと。家と会社では、それくらいしか差が無いなと思ったけど気のせいなのかな!?あとは差があるとしたら、猫がいるかどうか! RT @ran_bousyo: @pik SSDでも遅い、高価なSKUほど遅い http://t.co/u7IFm3HO と騒ぎになっています。
2012-09-12 09:46:22XE3 DLL Preloader
原理的には XE3 が使う DLL を LoadLibrary() して FreeLibrary() し、OS の DLL キャッシュの効果を狙うというものです。
.@ht_deko さんカッコいい… RT @ht_deko: ちょっと DLL プリローダ書いてみる。#delphi_jp
2012-09-12 09:48:28bds.exe /preload みたいなオプション (サイレントで起動して閉じるだけ) を作って、スタートアップに仕込めるようにすればいいのかも...いや、ユーザ側ではできませんがね (w #delphi_jp
2012-09-12 10:32:28.@ht_deko さんのソースを元に僕の環境(x64)でも動くように修正してみたんだけど、これで同じように動くかな…?自作ライブラリから必要な関数だけ引っ張ってきたせいで大きくなってるけど! http://t.co/XDnTlg8M
2012-09-12 13:19:03効果の程は?
@ht_deko いまマシンを再起動できないので速くなったのか判らないとです\(^o^)/あと、LOAD_LIBRARY_AS_DATAFILE で LoadLibraryEx してて、それでも効果あるのかなあと。どうでしょう?
2012-09-12 13:41:15@pik キャッシュが目的なら LOAD_LIBRARY_AS_DATAFILE でも効果は望める気がしますが...こればっかりは実測してみないとわからないかもですね。
2012-09-12 13:52:19@ht_deko ええ。Windows のキャッシュ機構がきちんと働くなら、LOAD_LIBRARY_AS_DATAFILE で良さそうなのですが、落ち着いたら実測してみます。
2012-09-12 14:19:39oh... RT: @ht_deko プレローダを実測してみましたが、有意な差は見られませんでした...orz #delphi_jp
2012-09-12 15:34:32・ XE3 DLL Preloader を実測してみた
とりあえず効果がワカンナイので実測してみる事にした。PC 起動後 3 分間 PC が落ち着くまで待ち、初回の XE3 起動にかかる時間を計測する事にした。
結果: 有意な差はみられない。
細川さんのプリローダを使ったのだが、dwFlags が LOAD_LIBRARY_AS_DATAFILE であれ 0 であれ差はなかった。プリローダで有意差がないとすると、"本当に DLL チェックに時間が掛かっている" のかもしれない。他にやれそうな事はと言えば [コントロールパネル] から "インデックスのオプション" で XE3 のフォルダをインデックス対象にする位か...これまた気休めだろうけど。
XE3 に限らず、XE2 や XE も二回目の起動の方が高速な事を考えると、"BDS.exe /preload" みたいなオプション (サイレントで起動してすぐに終了する) があれば、スタートアップに登録することもできて便利なのかもしれない。
XE3 DLL Preloader with WinVerifyTrust
@onimaro2010 さんが DLL を WinVerify Trust API でチェックする手法を提示されました。
これは OS の DLL キャッシュを当て込んだプリロードではなく、事前照合 (Pre-Verify) のためのプリロードです。
@ht_deko WinVerifyTrustでの署名の検証を組み込んでみたら。初回から2回目と同じになったような気がしなくもないですねー
2012-09-12 16:38:54