我应该更喜欢FileReader BufferedReader而读取CSV?



在Spring Boot应用程序中,我正在使用OpenCSV读取csv文件数据,并且可以使用FileReader到BufferedReader。然而,当我比较两者时,我在以下一点上陷入了困境:

BufferedReader比FileReader快,但是占用更多内存。

由于我正在以相同的方法读取多个数据文件(具有数十万条记录)(首先我从一个csv读取数据,然后使用检索到的id字段读取第二个csv),我认为我不应该使用BufferedReader以减少内存使用。但我真的不知道什么是最合适的方法。

所以,在这种情况下,我应该更喜欢FileReader BufferedReader吗?

一般来说,取决于关于你的约束条件。如果性能是一个问题,那么分配更多的资源并使用更快的解决方案。如果存在内存问题,则执行相反的操作。

对于BufferedReader,您还可以使用读取器和int构造函数来设置缓冲区大小,这符合您的需要。

BufferedReader reader = new BufferedReader(Reader, bufferSize);

另一个一般的经验法则是,不要做过早的优化,无论是内存还是性能。争取干净的代码,如果出现问题,使用分析器来识别瓶颈,然后处理它们。

据我所知,大小的差异仅仅在于缓冲区大小,默认情况下是8k或16k,所以差异是内存并不大;最重要的是,当你不再使用资源时,你要记住释放它们,调用close(),还记得在异常

的情况下这样做。