2015-04-20 2 views
-2

У меня есть программа (партия EOD), которая обрабатывает ежедневные начисленные позиции учета и обновляет таблицу UPDT.Оптимизация кода для повышения производительности программы

Программа такова, что.

  1. Запрос извлекает результаты из разных таблиц в результате присоединиться и т.д., и сохраняет записи в tempfile.txt
  2. отчетов читаются по одному из tempfile.txt и несколько серий расчетов бывают.
  3. Для каждой записи, которая считывается; после завершения вычислений для этой записи, мы вызываем метод update_UPDT(), который вычисляет вычисленные значения в таблице UPDT в базе данных.

ПРИМЕЧАНИЕ. Я хочу улучшить производительность программы.
Пожалуйста, предложите лучший подход. У меня есть несколько планов.

  1. Используйте Xml вместо tempfile. Xml будет легче.
  2. Вместо того, чтобы записывать каждую запись в БД один за другим, пишите в некоторую временную таблицу или говорите xml, а затем отправляйте массовую проводку в БД, как только весь набор вычислений будет запущен для всех записей.

Любые другие предложения?
Или использовать массивы лучше?

ответ

0

Прежде всего: мер.

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

  • Прикрепите профайлер, подобный VisualVM, к вашему процессу и попытайтесь разобраться в горячих точках.
  • Print GC details вашего приложения, чтобы лучше понять распределение/очистку памяти.
  • Измерение базовой производительности системы: использование ЦП, дисковый ввод-вывод и сетевой трафик.

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

Это единственный надежный подход к оптимизации.

+0

@Thanks Bizclop. Сначала измерьте горячие точки, чтобы найти места для улучшения. – user3346282

+0

Я измерил производительность, и кажется, что метод updateUPDT() поражен почти 12000 раз. Поэтому каждый из 12000 записей обновляется один за другим, что кажется узким местом. Теперь вместо того, чтобы записывать все записи один за другим, я пишу их в «BULKXML». После того, как все записи будут вставлены в массив xml, я должен обновить их в таблице UPDT, которую я хочу выполнить с помощью хранимой процедуры. Pls поможет мне сохранить хранимую процедуру. Нужно ли писать инструкцию updateproc или я должен использовать объединение в сохраненном proc для обновления значений таблицы из значений xml. ???? – user3346282

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