喫茶XRAYトップページ


[5216] Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 12:59:26 Sara
みなさん こんにちは。

Delphi Xe2で作成されるEXEのサイズって、大きすぎません?

ボタンを1個置いた状態でShowMessageをするだけのEXEを作成すると・・・

Delphi XE2・・・6917KB・・・
Delphi XE ・・・972KB・・・

家の環境が変なだけ?(^^;

まぁ、Webで調べるとXEからXE2はEXEサイズが増えているようですが、
こんなに極端な差はでていないんだが・・・

なにがいけないんだろ・・・(^^;

[5217] Re:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 13:20:19 Mr.XRAY
▼ Saraさん

> なにがいけないんだろ・・・(^^;

それはですね.生まれてから今まで,ほら,悪いこといっぱいしたでしょう?
と言うことはないですよね.

おそらく,機能追加の処理部分が入っているので,それらリンカでリンクさ
れるためではないかと思います.usesから不要な部分を削除すると,少しは
小さくなるのではないかと思います.
EXEが大きくなったと言っても,そのために起動や処理が遅くということでは
ないので気にしない方が...
あまり気にすると頭がハゲ... じゃない.薄くなっちゃうかも.

先の印刷のテストプログラムのサイズは,8,763 KBでした.
EXEのサイズは,アプリのコードを(uses部分が多くなると)どんどん増えて
いきますが,その増え方は,徐々に少なくなってきますよね.
(共通処理部分が増えるので)
ボタン1個や,フォーム(TForm)1個ぐらいで比較すると,Delphiのバージョン
の差が目立つことになりますね.
面白いと言えば,面白いでしょうけど.


[5218] Re2:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 13:29:06 Mr.XRAY
> おそらく,機能追加の処理部分が入っているので,それらリンカでリンクさ
> れるためではないかと思います.


例えば,32bitの変数が64bitになれば,サイズは2倍です.
計算に間違いがなければ...
また,昔,array [0..MAX_PATH-1] of CharのMAX_PATHは256でしたが,
今は1024です(Delphi 2010).これは4倍です.


[5219] Re2:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 13:42:00 Mr.XRAY
> EXEが大きくなったと言っても,そのために起動や処理が遅くということでは
> ないので気にしない方が...


例えば,EXEにビットマップを埋め込む場合,

(1) EXE に埋め込む - リソースの使い方
    http://mrxray.on.coocan.jp/Halbow/Notes/N008.html
(2) TPicture と TStringList のカプセル化
    http://mrxray.on.coocan.jp/Halbow/Notes/N005.html

とでは,(1)の方法の方がEXEの起動が早いです.
ただし,今のPCは性能がいいので,よほど大きいサイズのビットマップ
でないと,差が出ないとは思います.
コーディングにもよるという例です.

[5220] Re3:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 15:15:27 Sara
▼ Mr.XRAYさん

> usesから不要な部分を削除すると,少しは小さくなるのではないかと思います.
んー 初期表示されたフォームにボタンを追加しただけなので、あまり不要なユニットが
あるわけではないと思われますが・・・(^^;

> 例えば,32bitの変数が64bitになれば,サイズは2倍です.
まだ、64Bitには手をだしていないので、32Bitなんです・・・


> EXEが大きくなったと言っても,そのために起動や処理が遅くということでは
そうですね、遅くはないようです。

それに、他の方のHPを見ていると、XE2で1.5MB程度だとか書いてあるし・・・
家のは7MB弱あるし・・・

コンポーネントの登録数とか関係あるのかな・・・
usesになにも指定していないけど・・・

不明だ・・・

とりあえず、現状作っていたプロジェクトが500KB程度増加しているのは、
まぁ(許したくないけど)許せますが・・・今後小さいプログラムの開発を
しても、ちっとも小さくないと・・・(^^;

まぁ、Exeの圧縮を行えばある程度小さくなるのでしょうが・・・

話は変わりますが、TRectの定義が変わっていますね・・・

with Result do begin
  left := 0;
  top := 0;
  right := 100;
  bottom := 100;
end;

みたいなことをしても、正常にrightとbottomに値が入らないことがあるようです。
withを使わなければ、もちろん入りますが・・・何故・・・


[5221] Re4:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 15:53:24 Mr.XRAY
▼ Saraさん

> それに、他の方のHPを見ていると、XE2で1.5MB程度だとか書いてあるし・・・
> 家のは7MB弱あるし・・・


これは小さいですね.何か,デバッグ情報を含めない等の設定なのかな?
EXEのサイズにはあまり興味がないので(ゴメンなさい!)
他の方にバトンタッチ.でも,まだユーザが少ないので情報も少ないかも.

> みたいなことをしても、正常にrightとbottomに値が入らないことがあるようです。
> withを使わなければ、もちろん入りますが・・・何故・・・


あら?

[5223] Re5:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 21:20:48 Mr.XRAY
> EXEのサイズにはあまり興味がないので(ゴメンなさい!)

昔のように,配布する際にフロッピーディスクに収まらないとか,
HDD(ハードディスク)の容量が気になるとか,
ネット上の速度が問題になるとか,

があると関心が持てるんですが.
それにしても,1.5MBというはちょっと気になりますね.
一体どうしたらそんなサイズになるんだろう?


[5225] Re:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 22:25:48 igy
私のところのXE2では、

VCL フォームアプリケーション を新規作成・保存し、コンパイル。

32ビット Windows、ビルド構成:Debug   サイズ:7,098,205
32ビット Windows、ビルド構成:Release サイズ:1,589,760

64ビット Windows、ビルド構成:Debug   サイズ:7,921,097
64ビット Windows、ビルド構成:Release サイズ:2,315,264

でした。


[5226] Re2:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 23:22:14 Mr.XRAY
▼ igyさん,こんにちは.

> 32ビット Windows、ビルド構成:Debug   サイズ:7,098,205
> 32ビット Windows、ビルド構成:Release サイズ:1,589,760


Releaseでのサイズなんですね.納得しました.


[5228] Re3:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 23:31:05 Sara
▼ Mr.XRAYさん
▼ igyさん,こんにちは.
>
> > 32ビット Windows、ビルド構成:Debug   サイズ:7,098,205
> > 32ビット Windows、ビルド構成:Release サイズ:1,589,760
>
> Releaseでのサイズなんですね.納得しました.


いやそれが・・・ Releaseにしても変わらないんです・・・(^^;
やっぱり、環境が変?(^^;

いれなおしてみようかなぁ・・・

[5230] Re4:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 23:45:29 Mr.XRAY
▼ Saraさん

> いやそれが・・・ Releaseにしても変わらないんです・・・(^^;
> やっぱり、環境が変?(^^;


えっ!? それは何とも...

先の印刷のテストプログラムですが,以下の通りでした.

Windows XP(SP3) 32bit ビルド構成 :Debug   サイズ : 8,763 KB
Windows XP(SP3) 32bit ビルド構成 :Release サイズ : 3,441 KB

usesにテストで追加したのが1つ余計なのがあったので削除したら.

Windows XP(SP3) 32bit ビルド構成 :Debug   サイズ : 8,689 KB
Windows XP(SP3) 32bit ビルド構成 :Release サイズ : 3,402 KB

[5231] Re5:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/9 (金) 23:49:32 Sara
▼ Mr.XRAYさん

> > いやそれが・・・ Releaseにしても変わらないんです・・・(^^;
> > やっぱり、環境が変?(^^;
>
> えっ!? それは何とも...
>
> 先の印刷のテストプログラムですが,以下の通りでした.
>
> Windows XP(SP3) 32bit ビルド構成 :Debug   サイズ : 8,763 KB
> Windows XP(SP3) 32bit ビルド構成 :Release サイズ : 3,441 KB

判明しました・・・(^^;

プロジェクトのオプションでRelease構成を選んでもだめなんですね・・・(^^;

プロジェクトマネージャー上でビルド構成をダブルクリックしないと・・・orz

[5232] Re6:Delphi XE2で作成されるEXEのサイズって・・・返信 削除
2011/9/10 (土) 00:01:34 Mr.XRAY
> プロジェクトのオプションでRelease構成を選んでもだめなんですね・・・(^^;

そうそう.太字になっているのが有効なんですね.
でもよかったです.人事ながら,何故か安心しました.
これで今夜はぐっすり眠れそうです(笑)

前は「デバッグ情報を含める,含めない」でしたから,設定は楽に
なったと思っています.
それにしても,EXEのサイズはかなり大きいですねぇ.


[5296] Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/23 (金) 00:37:34 Mr.XRAY
タイトル通りなのですが、方法があります。
ただし、Win32とWin64別々、Debug,Release別のEXEは作成できていません。
できないのかも知れません。
もう少し調べてから記事にしたいと考えています。
さて、どこに掲載するかです。

今現在の結果では、フォーム1つだけのアプリで 1263 KBです。


[5300] Re:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 08:52:48 Mr.XRAY
以下の手順で出来ます.
Delphi XE2より前のような状態にします.

http://mrxray.on.coocan.jp/Delphi/Others/DelphiXE2_UnitScope.htm#04

[5301] Re2:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 12:56:48 Sara
▼ Mr.XRAYさん

> 以下の手順で出来ます.
> Delphi XE2より前のような状態にします.
>
> http://mrxray.on.coocan.jp/Delphi/Others/DelphiXE2_UnitScope.htm#04


ん? この記述は、XE以前のフォルダー構造で作成できます的な話ですか?
記述のとおり、ユニットスコープを全ソースから削除してビルドしましたが、
サイズは小さくならない・・・(まだそういう話ではない?)

私の現在作成しているプロジェクトのDebugサイズは23MB・・・
Releaseで8MB弱・・・2010では6MBだったのに・・・(^^;

[5302] Re3:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 13:01:49 Mr.XRAY
▼ Saraさん

> ん? この記述は、XE以前のフォルダー構造で作成できます的な話ですか?

です.
プロジェクトのファイルを
*.dpr
*.dfm
*.pas

だけにして,*.dprを開くんですが.どうでしょう.
(unitファイルが1つだけの場合)
http://mrxray.on.coocan.jp/Delphi/Info/OtherInfo_General.htm#fig3

[5303] Re4:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 23:14:38 DEKO 〔HomePage
空フォームの EXE は、

1.古い Delphi で作ったアプリに含まれるアイコンを指定する。
2.プロジェクトソース (*.dpr) の先頭に以下を指定する。

{$RTTI EXPLICIT METHODS([]) FIELDS([]) PROPERTIES([])}
{$WEAKLINKRTTI ON}

で、それなりに小さくなると思います。
XE2 のアイコン (delphi_PROJECTICON.ico) は 300k 近くありますから。

[Delphi 2010 以降で RTTI を無効にする]
http://ht-deko.minim.ne.jp/tech040.html#tech072

追記:
Delphi 7 の標準アイコンで試してみたら、

32bit Windows デバッグ構成: 6,329,545
32bit Windows リリース構成: 1,124,864

でした。

[5304] Re5:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 23:34:08 Mr.XRAY
▼ DEKOさん,どうも.

> XE2 のアイコン (delphi_PROJECTICON.ico) は 300k 近くありますから。

でかいですよね.最初ビックリしました.
EXEのサイズがMBオーダーですから,100KBぐらいは...

> [Delphi 2010 以降で RTTI を無効にする]
> http://ht-deko.minim.ne.jp/tech040.html#tech072


EXEのサイズを小さくするのが目的であれば,これですね.
追加記事の「ユニットスコープ...」は,正確にはEXEサイズを小さくする
のが目的ではなかったので,この発言のタイトルがよくなかったかも.


[5305] Re6:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/24 (土) 23:41:45 DEKO 〔HomePage
> この発言のタイトルがよくなかったかも.
(^^) 余談という事で。

余談ついでに...気を付けないと "デバッグとリリースでアイコンが違う"
という現象が発生しますよね > XE2。

# 22〜23日の雑談でやった "バージョン情報" の件と同じ理屈です。

[5306] Re7:Delphi XE2のEXEサイズを小さくする方法返信 削除
2011/9/25 (日) 00:05:23 Mr.XRAY
▼ DEKOさん

> 余談ついでに...気を付けないと "デバッグとリリースでアイコンが違う"
> という現象が発生しますよね > XE2。


実アプリでは独自のアイコン使用するので,実際には...
それにしても,「あやしいお部屋」(しつこい!!)のざつだんの9月分は
保存版みたいな感じになってしまってますね.
読むのも大変,ということは,書くのはもっと,ほんとにお疲れ様です.

お礼にもなりませんが,TWitterで池袋のパームクーヘンのお店紹介して
おきましたので,近くに来た時にお買い求めください.
(買って送れって? そうですね.そのうち)

FireMonkeyにちょっと心を動かされています.
ヘルプが整備されたら,またちょっとやってみようかな〜.ヘヘヘッ.


INCM/CMT
Cyclamen v3.82