所以我有这些巨大的 XML 文件(我的意思是 1.5GB+)而且它们没有 CRLF。我正在尝试运行类似 diff 的程序来查找这些文件之间的差异。
由于我还没有找到一个不会因内存耗尽而爆炸的差异程序,我决定最好的选择是在关闭标签后添加 CRLF。
我编写了一个 python 脚本来逐个读取字符并在“>”之后添加换行符。问题是我在大约 1995 年的单核 PC 上运行它,或者一些荒谬的东西,当我同时转换时,它只处理大约 20MB/小时。
知道如果用 C#/C/C++ 编写它会产生任何好处吗?如果没有,是否有人知道将逐字节进行的差异程序?谢谢。
编辑:
这是我的处理功能的代码...
def read_and_format(inputfile, outputfile):
''' Open input and output files, then read char-by-char and add new lines after ">" '''
infile = codecs.open(inputfile,"r","utf-8")
outfile = codecs.open(outputfile,"w","utf-8")
char = infile.read(1)
while(1):
if char == "":
break
else:
outfile.write(char)
if(char == ">"):
outfile.write("\n")
char = infile.read(1)
infile.close()
outfile.close()
EDIT2: 感谢您的精彩回复。增加读取大小带来了令人难以置信的速度提升。问题解决了。