我正在处理一个项目,需要读取一个文件,对每一行进行一些操作,并生成一个新文件。我有点担心表演。哪种算法更有效?我在下面写了一些伪码。
我该选哪一个?
发布于 2015-06-26 11:25:32
这取决于输入文件的大小:
如果您使用缓冲输入和输出流,则第二个版本将更高效,使用更少的内存,并且如果输入文件太大不会中断。
发布于 2015-06-26 11:20:21
在这两种情况下,您从每个文件读取一次,并写入每个文件一次。从这个角度看,效率没有多大差别。文件系统擅长缓冲和序列化IO,而磁盘几乎总是这类事情的限制因素。
在极端情况下,有时通过批处理写入操作可以获得一定的效率--一个大型的写操作比许多小的写操作更有效。然而,这在现代操作系统中很少相关,因为他们已经在幕后这样做了。
因此,这两种方法之间的关键区别在于内存的使用--在前一种情况下,您的内存占用量要大得多,而且无法从中获得任何好处。因此,你应该选择第二个选择*。
*除非您实际上需要引用数组中的其他部分,例如,如果您需要对数据进行排序,因为您确实需要将整个文件拖到内存中来操作它。
https://stackoverflow.com/questions/31071832
复制相似问题