【发布时间】:2017-11-30 18:10:53
【问题描述】:
目前,我们每晚进行一次自动化运行,对我们的软件生成的测试文件和基线文件进行比较。这种比较进行了多次,文件很大。文件比较是我们测试自动化的瓶颈。
文件比较目前是通过逐行比较缓冲来完成的。
我正在考虑对两个文件进行校验和比较(然后逐行检查校验和是否不匹配)。这是最好的方法吗?有没有人想推荐的公共图书馆?
谢谢
【问题讨论】:
-
文件必须相同还是不同?你必须看到差异吗?
-
请定义“大”。如果已经预先计算了校验和,那么比较校验和是最好的方法,如果您必须先计算它们,那肯定是性能最低的方法之一。
-
您可以从检查文件大小开始,如果它们不匹配它们已经不同,那么整个文件的校验和也是检查相等性的好方法
-
逐行可能意味着根据某些字符编码将文件字节转换为字符,查找换行符,创建表示不再需要行时必须进行垃圾收集的行的字符串等.,因此切换到较低级别的字节缓冲区 I/O 可能会提高速度 - 但首先使用分析器找出这是否是瓶颈......
-
恕我直言,对于必须相等(逐字节)且大小高达几百千字节的文件,我首先会比较它们的大小,如果它们相等,只需分配两个大小合适的字节数组,完整读取文件并比较字节数组。对于较大的文件,我会分配两个可能为 128KB 的块缓冲区并逐块读取文件,直到块不同或文件被完全读入。
标签: java checksum file-comparison