File size and smartlinking/ja
│
Deutsch (de) │
English (en) │
français (fr) │
日本語 (ja) │
português (pt) │
中文(中国大陆) (zh_CN) │
この記事はLazarus上で実行ファイルサイズとスマートリンクについて記述しています。 まだまだ作業途中のものなので、自由に書き込んでください。
導入
Windows環境での実例
この調査は、2006年2月8日、Lazarusが完全にスマートリンクされ、0.9.12としてリリースコンパイルされた時におこなわれました。異なった環境でのLazarus、スマートリンカのあるなし、FreePascalのバージョンとの組み合わせで、いろいろな結果になりました。
調査した条件は下記のようなものです。
- strip後の実行ファイルサイズ
- stripとUPX後の実行ファイルサイズ
- リンク時間
コンパイル時間はここでは考慮しませんでした。リンク時間と比較して、さほど有意な違いがなかったからです。
stripなしの実行ファイルサイズについても比較しませんでした。
stripはコマンドラインから、下記のコマンドでおこないます。
strip --strip-all magnifier.exe
コンパイルで実験するプログラムは「仮想の拡大鏡プログラム」です。 このプログラムのソースとバイナリーは、自由に使ってください。
ダウンロードは、こちら: http://magnifier.sourceforge.net
リンク時間について調査したコンピュータは、インテルマザーボードと、3.2GHzのデュアルコアPentium4、512MBのRAMのものです。
結果
利用したOSはWindows XP、そして、0.9.12がリリースされたときと同じ日の0.9.13のLazarusを利用しました。 この比較は以下のソフトウェアのコンフィグレーションで行われました:
- hereで利用可能なLazarus 0.9.12と、そのインストーラで入る Free Pascal 2.0.2。LCLとRTLはスマートリンクされたものです。以降、これらを単に0.9.12とします。
- 同じ日のサブバージョンとしてダウンロードできる Lazarus 0.9.13。FreePascal 2.0.2を別にインストールします。LCLはスマートリンクされていません。 以降、これらを単に 0.9.13+2.0.2とします。
- Lazarus 0.9.13スナップショット。インストーラで一緒に入ってくる Free Pascal 2.1。LCLはスマートリンクされていません。以降、これらを単に 0.9.13+2.1とします。
- Lazarus 0.9.13スナップショット。インストーラで一緒に入ってくる Free Pascal 2.1。LCLはスマートリンクされていません。以降、これらを単に 0.9.13+2.1とします。
- Lazarus 0.9.13スナップショット。インストーラで一緒に入ってくる Free Pascal 2.1。LCLはスマートリンクされています。以降、これらを単に 0.9.13+2.1+SLとします。
0.9.12 | 0.9.13 + 2.0.2 | 0.9.13 + 2.1 + SL | 0.9.13 + 2.1 | |
---|---|---|---|---|
strip後のファイルサイズ (バイト) | 1108480 | 1587712 | 1425408 | 1649152 |
UPX後のファイルサイズ (in bytes) | 318976 | 438272 | 388608 | 454144 |
リンク時間 | 15 秒 | 5 秒 | 45 秒 | 10 秒 |
結論
2006年2月8日の0.9.13スナップショットは、unstableな2.1ブランチからのコンパイラであることに注意してください。そのコンパイラは、他のバージョンと比べて大きめの実行ファイルと、リンクに時間がかかる原因になっています。 0.9.12は、UPXのあり、なしにかかわらず、すべてに対してファイルサイズが最適に小さくなります。つまり、SmartlinkingはWindowsでのファイルサイズを減少させることができる、ということです。しかしながら、これは、リンク時間がかかる、という代償がついています。スマートリンクなしよりも3倍の時間です。 0.9.12は、すでにスマートリンクのためにWindowsで完全に設定されています。どんな追加設定も必要ではありません。 スマートリンクに関しては、これは以前のリリースでのそうではありませんでした。
そのほかの関連情報
- Guide for anyone inexperienced in getting FPC and Lazarus to work properly.