Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 在进行逐字节比较之前,如何首先检查文件是否相等?_Algorithm_File_Compare_Byte_Equals - Fatal编程技术网

Algorithm 在进行逐字节比较之前,如何首先检查文件是否相等?

Algorithm 在进行逐字节比较之前,如何首先检查文件是否相等?,algorithm,file,compare,byte,equals,Algorithm,File,Compare,Byte,Equals,我正在写一个程序来比较很多文件 我首先按文件大小对文件进行分组。然后我在分组文件之间逐字节检查它们。在逐字节比较之前,我可以检查哪些参数或属性,以尽量减少使用它 Upd: 要获得校验和,我需要读取整个文件。我寻找一些可以过滤不相等文件的属性。我忘了说我需要100%相等的文件。哈希函数有冲突。检查文件的冲突。完成这项任务很困难 对于Python,您可以使用。对于C,您可以使用,例如。对于其他编程语言,可能也有类似的函数 最终,您可以使用linux内置的如果操作系统将文件记录为相同大小,那么除了检查

我正在写一个程序来比较很多文件

我首先按文件大小对文件进行分组。然后我在分组文件之间逐字节检查它们。在逐字节比较之前,我可以检查哪些参数或属性,以尽量减少使用它

Upd: 要获得校验和,我需要读取整个文件。我寻找一些可以过滤不相等文件的属性。我忘了说我需要100%相等的文件。哈希函数有冲突。

检查文件的冲突。完成这项任务很困难

对于Python,您可以使用。对于C,您可以使用,例如。对于其他编程语言,可能也有类似的函数


最终,您可以使用linux内置的

如果操作系统将文件记录为相同大小,那么除了检查字节之外,无法知道它们是否不同

对于一组文件,一旦知道两个文件相同,则只需对其中一个文件进行比较。出于这个原因,根据日期相似的文件更可能是相同的理论,将文件按日期分组是明智的。因此,您应该维护相同文件的列表。进行新的比较时,只需将其与列表的开头进行比较

您应该预先分配尽可能多的内存,并将列表头保留在内存中

在进行比较时,实际上不应该比较字节,而应该比较单词。例如,在32位机器上,您可以从硬盘驱动器读取512字节块中的数据,然后每次比较4字节。较新的x86处理器具有称为MMX的矢量化运算指令。您要确保您正在使用这些

如果您是用C语言编写英特尔机箱,请使用英特尔的编译器,而不是微软的编译器。仔细检查程序集,确保编译器没有做愚蠢的事情


您还可以通过并行化来提高工作速度。这是通过创建线程来完成的。例如,如果代码在四核计算机上运行,您将创建4个线程,并在4个线程之间分配工作。

您可以预处理文件并将其散列为一些散列代码,并检查具有相同散列代码的文件-这是一个选项吗?这些文件是否应该具有类似的内容?比较它们的检查结果勾选此选项。