2011-02-02 5 views
1

Я написал программу в Delphi 7 (включая компонент ModBus, который использует Indy). На моей машине он использует Indy 9 и отлично работает. Он хорошо взаимодействует с другими машинами через протокол ModBus. Однако, когда программа запускается на другой машине, я получаю нагрузку на процессор 90-100%. К сожалению, эта машина не в моем офисе, а «на другой стороне света». Как я могу узнать, использует ли этот аппарат Indy 9 или Indy 10? И, кроме того, если это работает Indy 10, это может быть проблемой или это маловероятно?Может ли моя программа использовать Indy 10 на сайте клиента, если я написал ее для использования Indy 9?

+0

Вы говорите об развернутом исполняемом файле? Разве все не скомпилировано в исполняемый файл? –

+0

Да, даже если он использует пакеты времени исполнения, он должен быть такой же версией Indy, как и для компиляции. –

ответ

1

Чтобы узнать, что вызывает высокую загрузку ЦП, вы можете попробовать профайлер, например AQTime или SamplingProfiler.

Это даст вам метод (ы), который выполняется большую часть времени. Тогда вы сможете узнать, что вызывает проблему.

В качестве альтернативы вы можете добавить некоторые записи в свое приложение.

4

Окончательный ответ Нет

Если вы компилируете программу с Indy 9, даже при использовании пакетов, то он должен использовать Indy 9 для запуска. AFAIK, нет возможности скомпилировать исполняемый файл с помощью INDY 9 и использовать INDY 10 во время выполнения, даже если вы хотите, и никак не случайно.

1

Чтобы найти основную причину, вы можете подготовить тестовое приложение, которое будет проходить через последовательность действий, таких как открытие/закрытие соединений. Если он запрашивает у пользователя подтверждение («Продолжить? Y/n»), прежде чем продолжить, пользователь может проверить загрузку ЦП на каждый шаг, чтобы обнаружить критическую операцию.

0

Спасибо за ответы. Я не думаю, что это вопрос Indy. На моем процессоре Quad CPU загрузка процессора также увеличивается с 1-2% до aprox. 25%. Это происходит, если я держу линию открытой (подключенной). Если я, однако, отключу сервер ModBus после каждого опроса со стороны ModBus CLient и позвольте этому компьютеру заново подключиться, загрузка ЦП всегда низка. Какое это нормально? Всегда ли открывать линию, или подключиться и отключиться для каждого опроса? Частота опроса: в режиме ожидания: 2000 мс, в активном режиме 500 мс.

+0

25% CPU на четырехъядерном ядре = 100% от одного из ядер –

+0

Плюс: если вы вошли в систему с учетной записью, используемой для запроса вопроса, вы могли бы отредактировать ответ, вместо того, чтобы добавлять ответ на свой собственный вопрос (или, может быть, вы это сделали, и просто изменили ярлык?). В любом случае StackOverflow позволяет специально редактировать, чтобы избежать длинных ответов на вопросы и ответы. –

0

вам нужно добавить журналы, чтобы вы знали, что происходит.

Это сама связь, которая вызывает у вас проблему? или это работа, выполняемая при подключении?

Журналы помогут вам сузить это, и вы сможете изменить код, чтобы быть менее голодным.

с использованием AQTime или SamplingProfiler, также как и предложить ранее, поможет вам.

лично я всегда добавляю регистрацию в каждое приложение по умолчанию, многие из них требуют включения, но его там. После того, как программное обеспечение оно на вашем сайте, вы никогда не знаете, что может измениться, и просто переключение журналов может сэкономить вам много времени.

 Смежные вопросы

  • Нет связанных вопросов^_^