ฉันมีCSV
ไฟล์35GB ฉันต้องการอ่านแต่ละบรรทัดและเขียนบรรทัดออกเป็น 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
ตัวเองโดยใช้Constructorที่ให้คุณตั้งค่าขนาดบัฟเฟอร์ บางทีขนาดบัฟเฟอร์ที่ใหญ่กว่า (หรือเล็กกว่า) อาจสร้างความแตกต่างได้ ฉันจะพยายามจับคู่BufferedWriter
ขนาดบัฟเฟอร์กับขนาดบัฟเฟอร์ของระบบปฏิบัติการโฮสต์