RAD Studio XE3 の IDE 起動時間をどうにかしたい!

RAD Studio XE3 の IDE の起動時間は、以前のバージョンと比べてかなり遅く、 QC に入れられてしまう始末。 XE3 IDE startup is extremely slow comparing to XE2 and previous http://qc.embarcadero.com/wc/qcmain.aspx?d=108632 続きを読む
0
おに @onimaro2010

細川さんのバージョンを元にWinVerifyTrustによる署名の検証を組み込んだバージョン。初回の起動が速くなったような気がするけど気のせいかもしれず。 http://t.co/EZ6tYvTN

2012-09-12 16:54:19
RAN @ran_bousyo

@onimaro2010 おにさんのコードを実行したところ、DLL確認15秒・IDE起動15秒が、12秒・13秒で5秒短縮しました!事前読み込みに9秒かかってるので帳尻は微妙ですが、効果ありです!

2012-09-12 19:04:47
DEKO @ht_deko

@onimaro2010 こっちは効果があるんですね!

2012-09-12 20:31:33

XE3 Preloader

いっそ bds.exe そのものをプリロードしてしまえ的な考え方です。

HOSOKAWA Jun @pik

StartUpInfo の wShowWindow に SW_HIDE を設定して XE3 を呼び出してやればいいんじゃね?と思ってやったら、スプラッシュが表示された……そりゃそうだ。WaitForInputIdle で待った後 WM_QUIT 送ってみたんだけど、効果あるのかな

2012-09-12 16:20:01
RAN @ran_bousyo

いつの間にか皆さんの検証が進んどる(驚)

2012-09-12 16:50:52
HOSOKAWA Jun @pik

.@ht_deko @ran_bousyo スタートアップに入れる感じの、こんな物を作りましたが、果たしてここまですべき事なのか……http://t.co/aEnvL6eI http://t.co/1UC8mXBH

2012-09-12 20:24:28
拡大
HOSOKAWA Jun @pik

@ht_deko @ran_bousyo いま、ソース直しました><

2012-09-12 20:30:05
HOSOKAWA Jun @pik

@ht_deko @ran_bousyo 後はよろしく頼みます……バタッ

2012-09-12 20:32:27
DEKO @ht_deko

@pik @ran_bousyo 後で togetter するなり CodeCentral にアップするなりしときますですー m(_ _)m

2012-09-12 20:33:25
RAN @ran_bousyo

@pik @ht_deko おー、ちょっと外出している間に。乙ですw

2012-09-12 20:35:35
HOSOKAWA Jun @pik

@ht_deko @ran_bousyo あわわ。お手数おかけして申し訳ないです。

2012-09-12 20:44:18
RAN @ran_bousyo

@pik @ht_deko 試してみました。チェックが4秒・起動が5秒で、初回起動が次回起動と同じになりました!Xe3Preloaderが40秒ですけど、効果は凄いです!

2012-09-12 21:19:17
RAN @ran_bousyo

@pik @ht_deko @ran_bousyo ソースを覗いて見る。これは・・・スタートアップ時に初回起動をしているということですか?

2012-09-12 21:25:09
RAN @ran_bousyo

@pik @ht_deko ああ、なるほど。「"BDS.exe /preload" みたいなオプション (サイレントで起動してすぐに終了する) 」の実装なんですね。

2012-09-12 22:43:02
HOSOKAWA Jun @pik

@ran_bousyo @ht_deko はい、その通りです。普通に一回起動させてます。ただ単に起動させると見えてしまうので、別のデスクトップを作って、そっちに表示させてます。

2012-09-12 22:58:19
HOSOKAWA Jun @pik

@ran_bousyo @ht_deko 効果があって良かったです。

2012-09-12 22:59:02
DEKO @ht_deko

最初僕が言ってたのが OS の DLL キャッシュを当て込んだプリローダで、@onimaro2010 さんのはそれを WinVerifyTrust API で事前チェックするようにしたもの、@pik さんが後で行われた実装は BDS.exe 自体のプリロードですね。

2012-09-12 23:07:50
DEKO @ht_deko

プリローダが起動中に XE3 を起動しても影響が出ないように、-rpreload とかのスイッチを入れれば完璧かもです。> Delphi 起動時に渡せるスイッチは? (http://t.co/4QRTLvWX)

2012-09-12 23:14:26
RAN @ran_bousyo

@ht_deko @onimaro2010 @pik みなさん色々考えましたねぇ(驚)

2012-09-12 23:33:42

事前に起動して起動速度を稼ぐ手法はよく用いられていますが、
大抵はそのまま常駐しておくというものが多いです。

DLL のプリロードでも WinVerifyTrust で事前照合すれば
効果がある事は @onimaro2010 さんのコードで実証されました。

加えて @pik さんの方法だと bds.exe 自体をスーパーフェッチに入れる事ができるため、
起動後即終了だけでも大幅な改善を見ることができます。

bds.exe に/preload なり /prefetch なりのオプションが実装されるといいですね。

XE3 Preloader / XE3 DLL Preloader の更なる改良

ソースコードが公開されているので自由に改造する事ができます。

DEKO @ht_deko

細川さんの XE3 Preloader をサイレント動作させるように少しだけいじってみました。http://t.co/Y4JgeBvY #delphi_jp

2012-09-13 06:31:59
DEKO @ht_deko

@onimaro2010 さんの XE3 DLL Preloader (with WinVerify Trust) をサイレント動作させるように少しだけいじってみました。http://t.co/JHuo04cS

2012-09-13 07:52:49