28

いくつかの大規模な (コードの行数が最大 60 万行) Delphi プロジェクトがあります。これらには、私たちのチームが開発したいくつかのカスタム コンポーネントが含まれています。

多くの場合、ctrl + スペースを使用するか、単に "." を押してコード補完を呼び出すと、IDE がロックし、長い間非常に難しいことを考えます。場合によっては、遅延が 1 分またはそれ以上になることがあります。また、提案とともにすぐにポップアップすることもあります。

Delphi でのインテリセンスのパフォーマンスに影響を与える要因は何ですか? このパフォーマンスを向上させる方法はありますか?

これまでの私の最善の解決策は、オートコンプリートをオフにして、1 分ほど静かに瞑想する必要があるときに ctrl+space を使用することです。

VS2005、VS2008、および XCode はすべて、事実上即座にインテリセンスのフィードバックを提供しているように思われることに言及せずにはいられません (ただし、これほど大規模なプロジェクトで試したことはありません)。

別の方法として、この提案を提供しました

4

6 に答える 6

14

Delphi コード インサイトは、ユーザーがコード インサイトを要求すると(Ctrl+Space、「.」など)、コンパイラ dll を呼び出してカスタム コンパイルを実行します。このカスタム コンパイルは、ユニット内でビルドを実行し、ファイル バッファー内の現在のオフセットに到達するまでコード生成、リンクなどをスキップします。これを念頭に置いて、コンパイラが現在の位置に到達する前に確認するユニット リストは、Code Insight 操作の速度を決定する大きな要因となります。ファイルシステムへの多大な依存などを引き起こしているユニット (または複数のユニット) が存在する可能性があります。現在のユニットをコンパイルするために必要な t は、パフォーマンスを向上させる可能性があります。さらに、

于 2009-05-22T15:12:43.813 に答える
7

プロジェクトで使用されるすべての単位 (*) を dpr に明示的に含めるようにしてください。
別のユニットから呼び出されたユニットを見つけるために検索パスに依存しないでください。それを dpr に追加してください。dpr ははるかに長くなりますが、コード インサイトを含め、コンパイル関連のすべてが高速になります。

(*) 搭載されているコンポーネントの単位ではありません。

于 2009-05-22T20:00:36.190 に答える
3

これは Delphi の長年の問題であり、オート コンプリートを無効にする必要がありました。しばらくそのように働いた後、私はそれにとても満足していました。ほんの一瞬しかかからなかったとしても、IDE でタイピングが遅れると、当惑し、フローが中断されました。オートマチックをオフにした方がずっといいです、IMO。

于 2009-05-22T15:08:09.330 に答える
2

私は自分でこの問題に遭遇しました.環境ライブラリパスからデッドネットワークリンクを削除することで修正しました. 私の問題を 100% 解決しました。

于 2009-06-05T16:29:33.153 に答える
0

チームのカスタム コンポーネントのソース ディレクトリをライブラリ パスに含めますか? コンポーネントの DCU ファイルのみがライブラリ パスにある場合と、ソース ファイルもある場合の速度の違いを見るのは興味深いことです。

于 2009-05-24T11:27:13.243 に答える