Delphi実行可能ファイルのサイズに影響を与えるものは何ですか?

StackOverflow https://stackoverflow.com/questions/281548

  •  07-07-2019
  •  | 
  •  

質問

デルファイのバージョン、bpl、コンポーネント、すべてが同じです。さらに、3台のマシンでは、結果の実行可能ファイルのサイズが異なります。 exeのサイズに他に何が影響しますか?

私のマシンでは、このサイズを取得しています(Vista 6.0.6001):

4.547.584 bytes

同僚のマシンで、彼は(XP 5.1.2600 SP3)を取得します:

4.530.688 bytes

3番目のコラージュで、彼は以下を取得します:(XP 5.1.2600 SP2)

4.527.104 bytes

OSバージョンは、コンパイルされたexeサイズに影響しますか?

役に立ちましたか?

解決

構成の違い、または3つのマシン間に異なるバージョンのコンポーネントがインストールされている可能性があります。ビルド設定が同じであることを確認した後、空のフォームを作成して3つすべてで試すことをお勧めします。同じ場合は、異なるコンポーネントが見つかるまで、いくつかのサードパーティコンポーネントを追加します。

さらに、Delphiの異なるバージョン(メジャーまたはマイナー/アップデートバージョン)がある場合があります。

他のヒント

ほとんどの場合、違いはマシン間の異なるコンパイラ設定に起因します。たとえば、範囲チェックをオンまたはオフにすると、実行可能ファイルのサイズがわずかに変わります。

Delphiの最新バージョンの優れた点の1つは、MSBuildの使用です。これにより、特定のビルドの設定が同じであることを簡単に確認できます。

うーん...

SizeOf(XPSP2.exe)<!> lt; SizeOf(XPSP3.exe)<!> lt; SizeOf(Vista.exe)

結論:

Windowsの最新バージョンほど、<!> quot; filler <!> quot;信頼性を高めるためにランダムに挿入されます。より多くのスペースが必要な場合は、より強力である必要があり、おそらく世界で最も優れたエンジニアによってコーディングされています! :-)(申し訳ありません-マイクロソフトで長年働いています!)

Delphi / BCBでは、サイズに影響を与える可能性のあるいくつかの要素があります。

ビルド構成:リリースモードはデバッグセクションでEXEにリンクしないため(デフォルト)、サイズは小さくなります。また、コードの最適化によって後押しされる場合があります。

ダイナミックRTLとのリンク:有効にすると、EXEは小さくなりますが、外部ライブラリを使用可能にする必要があります。

ランタイムパッケージを使用したビルド:有効にすると、EXEに直接リンクする代わりに、使用するランタイムパッケージに動的にリンクします。これにより、サイズの違いが最大になる可能性があります。

それらは他の要因ですが、上記が私が遭遇する主な要因になる傾向があります。

IIRC、マイナーな変更を行った後に再コンパイルすると、残酷なレイアウトが残る可能性があります-スマートコンパイラの副作用の1つだと思います:}

実際、これはかなり前から存在している問題です。参照

CodeGear品質管理

Borland Delphiニュースグループ

Delphiニュースグループでの最近の議論(httpビュー)。

コンポーネントのインストールの違いなどとはまったく関係ありません。実際、最後のリファレンスでは、各コンパイル/ビルドでアプリケーションに挿入されるタイムスタンプと関係があることに言及しています。また、ビルドを行っており、バージョン情報が含まれていて、ビルド番号が自動インクリメントに設定されている場合、これもバイナリの違いを引き起こします。

実際には、それよりもはるかに興味深い。

同じマシン上で同じアプリケーションを何度も連続して再構築しても、コンパイル間で構成がまったく変更されず、わずかに異なるサイズの実行可能ファイルが生成されます。特定のプロジェクトを10回ビルドし、10個(!)の異なる実行可能サイズを取得しました-毎回異なるサイズです!

ただし、現象は十分なサイズ/複雑さのプロジェクトでのみ発生することに気付きました。

これを比較的単純なプロジェクトで行うと、内部の違いはまだありますが(バイナリ比較を行う場合)、実行可能ファイルは同じサイズになります。現在、これを調査する時間はありませんが、少し興味があります。

単にコンパイルを実行する、つまり、アプリケーションを効果的に再リンクするだけで、結果の実行可能ファイルのサイズは変更されませんが、そのコンテンツは変更されます(生成されるバイナリファイルは同一ではありません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top