8

Delphi のバージョン、bpls、コンポーネント、すべてがまったく同じです。それでも、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 のサイズに影響しますか?

4

7 に答える 7

10

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

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

于 2008-11-11T19:39:24.770 に答える
7

違いは、ほぼ確実にマシン間のコンパイラ設定の違いによるものです。たとえば、範囲チェックをオンまたはオフにすると、実行可能ファイルのサイズがわずかに変わります。

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

于 2008-11-11T18:17:01.270 に答える
4

うーん...

SizeOf(XPSP2.exe) < SizeOf(XPSP3.exe) < SizeOf(Vista.exe)

結論:

Windows のバージョンが新しいほど、より多くの「フィラー」がランダムに挿入され、信頼性が高まります。より多くのスペースを必要とする場合は、より強力である必要があり、おそらく世界最高のエンジニアによってコーディングされたものです! :-) (申し訳ありませんが、Microsoft での勤務時間が長すぎます!)

于 2009-06-10T05:28:45.050 に答える
3

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

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

Linking with Dynamic RTL : 有効にすると、EXE は小さくなりますが、外部ライブラリを利用できるようにする必要があります。

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

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

于 2008-11-11T17:31:22.877 に答える
1

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

CodeGear品質管理

BorlandDelphiニュースグループ

Delphiニュースグループ(httpビュー)でのこれに関する最近の議論。

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

于 2009-03-13T17:59:18.760 に答える
1

IIRC、マイナーな変更を加えた後に再コンパイルすると、問題が発生する可能性があります-スマートコンパイラの副作用の1つだと思います:}

于 2008-12-18T22:11:54.333 に答える
0

実際には、よりもはるかに興味深いものです。

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

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

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

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

于 2009-03-13T17:46:27.030 に答える