現在の Delphi では、未使用のコードも除外されています。これは、Delphi で簡単に確認できます。コンパイルすると、コードのガターに「青い点」が表示されます。使用されていない機能には青い点がなく、除外されていることを意味します。プロジェクト オプションの [最適化] チェックボックスをオンにすると、コードが書き直されてレジスタをより活用できるようになり、特定の変数が削除されます。
それにもかかわらず、Delphi 実行可能ファイルは、特に特定のユニットを使用する場合に大きくなります。Delphi 7 で作成できる最小の .exe は約 10Kb だと思います。それ以降のバージョンでは、これはおそらくもう少し大きくなります。
ファイルサイズの重要な原因は
- 資力。大きな画像や大量の画像は、多くのスペースを消費します。複数のフォームでアイコンを使用する場合は、それらを中央のイメージ リスト (共有データ ソース上) に配置してください。利用可能な PngImageList 実装の 1 つを使用して、画像サイズを小さくして品質を向上させます。
- rtti。実行時の型情報により、クラス定義が余分なスペースを消費します。このスペースは、一部はクラスに関するメタ情報によるものですが、主にすべての余分なコードが原因です。RTTI を使用して呼び出すことができるメソッドは、一種の「遅延バインディング」方式でバインドできます。そのため、コンパイラはメソッドを削除できるかどうかを判断できないため、実行可能ファイルに含める必要があります。
- 登録されたクラス。2 と同様。クラスが登録されている場合は、その名前を文字列として使用してフェッチおよびインスタンス化できます。これらのクラスは、コンパイラが必要かどうかを認識できないため、使用されない場合でも、プロジェクトに含める必要があります。
最近の Delphi バージョンでは RTTI が拡張されているのは事実です。これにより、クラスに関する RTTI メタ情報もより多くのスペースを消費するようになると思います。それについてあなたができることは限られています。
一般に、Delphi コンパイラは依然として多くの最適化を行っていると思います。exe ファイルのサイズを気にする必要はありません。もしそうなら、あなたはのようなパッカーを試すことができますupx
. 私はupxで良い経験をしています。すべての機能を保持しながら、実行可能ファイルを元のサイズの約 5 分の 1 以下に削減します。