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

RAD Studio XE3 の起動速度は遅い

RAN @ran_bousyo

ははは。RT XE3 IDE startup is extremely slow comparing to XE2 and previous http://t.co/yXTRkDxL

2012-09-12 08:57:07
HOSOKAWA Jun @pik

たしかに XE3 の起動は遅い。embarcadero の開発者は SSD を使ってるのではないか。SSD マシンだとあまり気にならないな…会社の HDD だと気になるけど!

2012-09-12 09:19:42
RAN @ran_bousyo

@pik SSDでも遅い、高価なSKUほど遅い http://t.co/pVk8xYtA と騒ぎになっています。

2012-09-12 09:31:42
RAN @ran_bousyo

起動してから、長い間無反応になる挙動もイライラするのですよねぇ。

2012-09-12 09:34:51
DEKO @ht_deko

@ran_bousyo @pik 雑談 (http://t.co/bPnMFqBd) でも書きましたが、DLL プリローダとかでは解消できないものでしょうかね?

2012-09-12 09:34:24
RAN @ran_bousyo

@ht_deko @pik そうですね。チェックするなとは言いませんが、とってつけた様な乱暴な方法で、delphi2005以来の起動速度向上の苦闘を台無しにするようなことは止めてほしいですね。

2012-09-12 09:39:58
HOSOKAWA Jun @pik

なんと。家と会社では、それくらいしか差が無いなと思ったけど気のせいなのかな!?あとは差があるとしたら、猫がいるかどうか! RT @ran_bousyo: @pik SSDでも遅い、高価なSKUほど遅い http://t.co/u7IFm3HO と騒ぎになっています。

2012-09-12 09:46:22

XE3 DLL Preloader

原理的には XE3 が使う DLL を LoadLibrary() して FreeLibrary() し、OS の DLL キャッシュの効果を狙うというものです。

DEKO @ht_deko

ちょっと DLL プリローダ書いてみる。#delphi_jp

2012-09-12 09:44:25
HOSOKAWA Jun @pik

.@ht_deko さんカッコいい… RT @ht_deko: ちょっと DLL プリローダ書いてみる。#delphi_jp

2012-09-12 09:48:28
DEKO @ht_deko

@pik がっかりするくらい単純な構造ですよ (^^;A http://t.co/9sMbBmcj

2012-09-12 10:20:08
DEKO @ht_deko

bds.exe /preload みたいなオプション (サイレントで起動して閉じるだけ) を作って、スタートアップに仕込めるようにすればいいのかも...いや、ユーザ側ではできませんがね (w #delphi_jp

2012-09-12 10:32:28
HOSOKAWA Jun @pik

.@ht_deko さんのソースを元に僕の環境(x64)でも動くように修正してみたんだけど、これで同じように動くかな…?自作ライブラリから必要な関数だけ引っ張ってきたせいで大きくなってるけど! http://t.co/XDnTlg8M

2012-09-12 13:19:03

効果の程は?

DEKO @ht_deko

@pik お?多少は効果がありましたか?

2012-09-12 13:30:09
HOSOKAWA Jun @pik

@ht_deko いまマシンを再起動できないので速くなったのか判らないとです\(^o^)/あと、LOAD_LIBRARY_AS_DATAFILE で LoadLibraryEx してて、それでも効果あるのかなあと。どうでしょう?

2012-09-12 13:41:15
DEKO @ht_deko

@pik キャッシュが目的なら LOAD_LIBRARY_AS_DATAFILE でも効果は望める気がしますが...こればっかりは実測してみないとわからないかもですね。

2012-09-12 13:52:19
HOSOKAWA Jun @pik

@ht_deko ええ。Windows のキャッシュ機構がきちんと働くなら、LOAD_LIBRARY_AS_DATAFILE で良さそうなのですが、落ち着いたら実測してみます。

2012-09-12 14:19:39
DEKO @ht_deko

@pik 実測しようとしたら Windows Update \(^o^)/

2012-09-12 14:20:44
DEKO @ht_deko

プレローダを実測してみましたが、有意な差は見られませんでした...orz #delphi_jp

2012-09-12 15:00:53
HOSOKAWA Jun @pik

oh... 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" みたいなオプション (サイレントで起動してすぐに終了する) があれば、スタートアップに登録することもできて便利なのかもしれない。

http://ht-deko.minim.ne.jp/ft1209.html#120912_06

XE3 DLL Preloader with WinVerifyTrust

@onimaro2010 さんが DLL を WinVerify Trust API でチェックする手法を提示されました。

これは OS の DLL キャッシュを当て込んだプリロードではなく、事前照合 (Pre-Verify) のためのプリロードです。

おに @onimaro2010

@ht_deko WinVerifyTrustでの署名の検証を組み込んでみたら。初回から2回目と同じになったような気がしなくもないですねー

2012-09-12 16:38:54