2011-01-11 9 views
2

私はデルファイについて私より賢い人たちから知っておきたいのですが、 'uses'ディレクティブにユニットインポートがたくさんある場合、アプリケーションが遅くなったり大きくなったりしますか?Delphiのユニットで 'uses'ディレクティブはアプリケーションのサイズを大きくしたり遅くしたりしますか?

インポートしたが使用していないユニットが多い場合は、削除する方が良いでしょうか?

答えて

2

要するに、必要のない単位を使用すると、実行可能ファイルが大きくなります。通常、コードのパフォーマンスにほとんど違いはありません。 GexpertsCnPackなどの

ツールが自動的に未使用のユニットを除去するためのウィザードを持っています。

実行可能なサイズを減らすためにできる主なことは、disable RTTIです。

EDIT:Delphiの古いバージョンでは、リンカーは未使用のメソッドを実行可能ファイルから削除します。その場合でも、未使用メソッドの初期化/ファイナライズセクションのコードは、実行可能コードにリンクされた余分なコードとなり、そのサイズが大きくなります。

Delphi 2010では、RTTIの新しい改良版が導入されました。この副作用の1つは、未使用の関数がリンカーによって削除されなくなったことです。この現象はcustomised to some degreeになる可能性があります。

+1

この回答は一般的に重要な意味を持ちません。必要のないユニットを使用すると、IDEのコード洞察機能が遅くなり、エラー洞察機能を駄目にすることがあります。ほとんどの場合、アプリケーションを大きくすることはできません。あなたが追加するユニットに初期化セクションのようなものが存在しないか、それに依存するユニットに初期化セクションが含まれていない場合、ユニットをuses節に追加してもEXEサイズは増えません。しかし、RTTIを無効にすることについての部分は正しいです。 –

+0

@Warren Pと現代のRTTIとデフォルトの設定では、リンカーは実際に使用されていないことを証明できないため、未使用の関数を削除することはできません。ユージーンの答えの下のコメントを見てください。 –

+0

@Warren Pコードとエラーの洞察に関するあなたの点は正しいかもしれませんが、彼らはOPによって尋ねられませんでした。私の答えの正しさに関しては、Delphi 2010ではデフォルト設定で正しいです。あなたのポイントは、旧バージョンのDelphiで有効です。私はこれを明確にするために答えを編集します。 –

5

参照単位がコンパイルを遅くしますが、未使用コードがリンクされていないため、コンパイルされたアプリケーションのサイズにはほとんど影響しません。ユニットに初期化またはファイナライズの部分がない限り。存在する場合、ユニットはリンクされます。

また、あなたが持っているユニットが多いほど、インテリセンスが遅くなることに注意してください。

+0

うん、私はそれに気づいた。時にはDelphi IDEには本当に存在しない奇妙なエラーがあります。 – evilone

+1

@Eugene新しいRTTI機能の出現とデフォルト設定{$ WEAKLINKRTTI OFF} –

+1

@Davidであなたの声明はまったく正しいとは思わない。私は4つの異なるステートメントを作った。また、約1年前に「新しいRTTI」が登場し、ほとんどのユーザーは引き続き古いバージョンのDelphiを使用しています。これはダウンロード統計によって証明されています。 –

2

各固有のは、完成した製品にさらに多くのコードがあることを意味するため、アプリではを使用してアプリを大きくします。

未使用のクラスについては心配しないでください。コンパイラがコード内のどこにも使用されていないことを証明できれば、コンパイラはそれを単独で削除します。その中にコードが触れられていなければ、ユニット全体を削除することもできます。

+1

を読んで、@ Eugeneにコメントしたところ{$ WEAKLINKRTTI OFF}コンパイラ通常何かを証明することはできません! –

関連する問題