1

Delphi 7 でプログラムを作成しました (Indy を使用する ModBus コンポーネントが含まれています)。私のマシンでは Indy 9 を使用しており、正常に動作します。ModBus プロトコルを介して他のマシンと良好に通信します。ただし、プログラムを別のマシンで実行すると、CPU の負荷が 90 ~ 100% になります。残念ながら、このマシンは私のオフィスではなく、「地球の反対側」にあります。このマシンが Indy 9 または Indy 10 を使用しているかどうかを確認するにはどうすればよいですか? さらに、Indy 10 を実行している場合、それが問題になる可能性はありますか?

4

5 に答える 5

4

決定的な答えはノーです

プログラムを indy 9 でコンパイルすると、パッケージを使用していても、INDY 9 を使用して実行されます。私の知る限り、INDY 9 を使用して実行可能ファイルをコンパイルし、実行時に INDY 10 を使用する方法はありません。

于 2011-02-02T16:39:21.453 に答える
1

CPU 負荷が高い原因を突き止めるには、AQTimeSamplingProfilerなどのプロファイラーを試してみてください。

これにより、ほとんどの時間実行されているメソッドが取得されます。次に、問題の原因を突き止めることができます。

または、アプリケーションにログを追加することもできます。

于 2011-02-02T08:54:53.507 に答える
1

根本原因を見つけるために、接続の開閉などの一連のアクションを実行するテスト アプリケーションを準備できます。続行する前にユーザーに確認を求める場合 ("Continue ? y/n")、ユーザーはすべてのステップの CPU 負荷をチェックして重要な操作を検出できます。

于 2011-02-02T16:41:11.933 に答える
0

回答ありがとうございます。これは Indy の問題ではないと思います。私の Quad CPU PC では、CPU 負荷も 1 ~ 2% から約 1% に上昇します。25%。これは、回線を開いたまま (接続) にすると発生します。ただし、ModBus クライアント側からのポーリングのたびに ModBus サーバーを切断し、その PC を再接続させると、CPU 負荷は常に低くなります。正常とは何ですか?常に回線を開いたままにするか、ポーリングごとに接続および切断しますか? ポーリング頻度は次のとおりです。アイドル モードでは 2000 ミリ秒、アクティブ モードでは 500 ミリ秒です。

于 2011-02-08T09:05:24.043 に答える
0

何が起こっているのかを確実に把握するために、ログを追加する必要があります。

問題を引き起こしているのは接続自体ですか?それとも接続中の作業ですか?

ログはこれを絞り込むのに役立ち、コードを変更してプロセッサーの負荷を軽減できる場合があります。

前に提案したように AQTime または SamplingProfiler を使用すると役立ちます。

個人的には、デフォルトで常にすべてのアプリケーションにログを追加します。多くのアプリケーションはオンにする必要がありますが、そこにあります。ソフトウェアがサイトに配置されると、何が変更されるかわかりません。ログをオンにするだけで時間を大幅に節約できます。

于 2012-02-19T21:21:29.267 に答える