У мене CSV
файл 35 Гб . Я хочу прочитати кожен рядок і записати його в новий CSV, якщо він відповідає умові.
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("source.csv"))) {
try (BufferedReader br = Files.newBufferedReader(Paths.get("target.csv"))) {
br.lines().parallel()
.filter(line -> StringUtils.isNotBlank(line)) //bit more complex in real world
.forEach(line -> {
writer.write(line + "\n");
});
}
}
Це займає ок. 7 хвилин. Чи можна ще більше прискорити цей процес?
parallel
робить це швидше? І це не перетасовує лінії навколо?
BufferedWriter
себе, використовуючи конструктор, який дозволяє встановити розмір буфера. Можливо, більший (або менший) розмір буфера призведе до зміни. Я б спробував співставити BufferedWriter
розмір буфера з розміром буфера хост-операційної системи.