Saya memiliki CSVfile 35GB . Saya ingin membaca setiap baris, dan menulis baris ke CSV baru jika cocok dengan suatu syarat.
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");
});
}
}
Ini membutuhkan sekitar. 7 menit. Apakah mungkin untuk mempercepat proses itu lebih banyak lagi?
parallelmembuatnya lebih cepat? Dan bukankah itu mengocok garis sekitar?
BufferedWriterdiri Anda sendiri, menggunakan konstruktor yang memungkinkan Anda mengatur ukuran buffer. Mungkin ukuran buffer yang lebih besar (atau lebih kecil) akan membuat perbedaan. Saya akan mencoba mencocokkan BufferedWriterukuran buffer dengan ukuran buffer sistem operasi host.