Algorithm 在进行逐字节比较之前,如何首先检查文件是否相等?
我正在写一个程序来比较很多文件 我首先按文件大小对文件进行分组。然后我在分组文件之间逐字节检查它们。在逐字节比较之前,我可以检查哪些参数或属性,以尽量减少使用它 Upd: 要获得校验和,我需要读取整个文件。我寻找一些可以过滤不相等文件的属性。我忘了说我需要100%相等的文件。哈希函数有冲突。检查文件的冲突。完成这项任务很困难 对于Python,您可以使用。对于C,您可以使用,例如。对于其他编程语言,可能也有类似的函数Algorithm 在进行逐字节比较之前,如何首先检查文件是否相等?,algorithm,file,compare,byte,equals,Algorithm,File,Compare,Byte,Equals,我正在写一个程序来比较很多文件 我首先按文件大小对文件进行分组。然后我在分组文件之间逐字节检查它们。在逐字节比较之前,我可以检查哪些参数或属性,以尽量减少使用它 Upd: 要获得校验和,我需要读取整个文件。我寻找一些可以过滤不相等文件的属性。我忘了说我需要100%相等的文件。哈希函数有冲突。检查文件的冲突。完成这项任务很困难 对于Python,您可以使用。对于C,您可以使用,例如。对于其他编程语言,可能也有类似的函数 最终,您可以使用linux内置的如果操作系统将文件记录为相同大小,那么除了检查
最终,您可以使用linux内置的如果操作系统将文件记录为相同大小,那么除了检查字节之外,无法知道它们是否不同 对于一组文件,一旦知道两个文件相同,则只需对其中一个文件进行比较。出于这个原因,根据日期相似的文件更可能是相同的理论,将文件按日期分组是明智的。因此,您应该维护相同文件的列表。进行新的比较时,只需将其与列表的开头进行比较 您应该预先分配尽可能多的内存,并将列表头保留在内存中 在进行比较时,实际上不应该比较字节,而应该比较单词。例如,在32位机器上,您可以从硬盘驱动器读取512字节块中的数据,然后每次比较4字节。较新的x86处理器具有称为MMX的矢量化运算指令。您要确保您正在使用这些 如果您是用C语言编写英特尔机箱,请使用英特尔的编译器,而不是微软的编译器。仔细检查程序集,确保编译器没有做愚蠢的事情
您还可以通过并行化来提高工作速度。这是通过创建线程来完成的。例如,如果代码在四核计算机上运行,您将创建4个线程,并在4个线程之间分配工作。您可以预处理文件并将其散列为一些散列代码,并检查具有相同散列代码的文件-这是一个选项吗?这些文件是否应该具有类似的内容?比较它们的检查结果勾选此选项。