Оптимизация пользовательского итератора для обработки больших файлов в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Оптимизация пользовательского итератора для обработки больших файлов в Java

Сообщение Anonymous »

Я часто работаю с большими файлами и внедрил собственный итератор для эффективной обработки этих файлов при минимизации использования памяти. Итератор считывает каждую строку из файла, анализирует ее в объект Message и пропускает недопустимые записи.
Есть ли какие-либо оптимизации или лучшие практики, которые я могу применить к этой пользовательской итерируемой реализации для дальнейшего сокращения использование памяти или улучшить ее производительность? Ниже приведена реализация для справки:

Код: Выделить всё

public class MessageIterable implements Iterable {

private final Logger logger = MessageFileProcessorSingleton.getInstance().getLog();

private final BufferedReader bufferedReader;
private final MessageParserService parserService;
private final PostExceptionTasksHandler postExceptionTasksHandler;

public MessageIterable(
BufferedReader bufferedReader,
PostExceptionTasksHandler postExceptionTasksHandler,
MessageParserService service) {
this.bufferedReader = bufferedReader;
this.postExceptionTasksHandler = postExceptionTasksHandler;
this.parserService = service;
}

@Override
public Iterator iterator() {

return new Iterator() {
Message next;

@Override
public boolean hasNext() {
if (next != null) {
return true;
}

try {
String messageRowJson;
while ((messageRowJson = bufferedReader.readLine()) != null) {
next = parserService.getMessageFromRowJson(messageRowJson);
if (next == null) {
handleInvalidMessage();
} else {
return true;
}
}
} catch (IOException e) {
return false;
}
return false;
}

@Override
public Message next() {
Message current = next;
next = null;
return current;
}
};
}

private void handleInvalidMessage() {
logger.warn("Invalid message encountered. Executing post-exception tasks.");
postExceptionTasksHandler.handle();
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... es-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»