Будет ли повторное открытие файлов программой чтения вызывать проблемы с производительностью в JSR352?

Я пытаюсь разработать пакетную программу Java с использованием реализации IBM JSR352. Поскольку пакетное задание включает в себя итеративную обработку огромного количества записей, я решил реализовать его как задание обработки фрагментов. Постановка проблемы подробно описана в здесь.

Ссылаясь на пример BonusUpdate, предоставленный IBM, они, кажется, открывают и закрывают файл в методе средства чтения processItem() для каждой из N записей, считываемых классом средства чтения.

Не приведет ли это к снижению производительности? Нельзя ли оставить файл открытым до последнего чтения?


person yathirigan    schedule 24.08.2017    source источник


Ответы (1)


Метод readItem() класса GeneratedCSVReader не открывает файл каждый раз. Он открывается, когда пакетный контейнер вызывает метод open().
Метод processItem в BonusCreditProcessor не осуществляет никакого доступа к файлам.

person DFollis    schedule 24.08.2017
comment
Глядя на логику в методе открытия читателя, кажется, что они запоминают номер строки, и во время открытия они, кажется, перемещают курсор на этот номер строки. если Open не вызывается каждый раз, как метод readItem() читает следующие строки? - person yathirigan; 24.08.2017
comment
readItem() увеличивает значение recordNumber в строке 54. В контрольных точках вызывается метод checkPointInfo(), который возвращает текущее значение recordNumber. При перезапуске задания данные контрольной точки передаются функции open(), которая устанавливает локальное значение recordNumber в правильное значение для последней завершенной контрольной точки. При первоначальной отправке задания нет данных контрольной точки, поэтому тест в строке 61 пропускает настройку recordNumber, и мы начинаем с начального значения 0. - person DFollis; 25.08.2017
comment
Спасибо. Есть ли доступная документация, объясняющая работу примера BonusPayout? У меня все еще есть некоторые вопросы даже после просмотра кода. Особенно на Слушателях. - person yathirigan; 28.08.2017
comment
Привет, вы можете написать мне по адресу [email protected], чтобы обсудить BonusPayout. - person Scott Kurz; 05.09.2017