Forgot password
 Register account
View 14|Reply 4

两文件逐字节比较判断是否相同耗时多?

[Copy link]
大白兔奶糖 posted 2025-7-9 19:22 |Read mode
Last edited by 大白兔奶糖 2025-7-9 20:12多个文件两两逐字节比较判断是否相同耗时多?
还是先计算两文件哈希和,再判断是否相等耗时多?

计算哈希和要将文件从头到尾载入内存,还有额外的计算开销
多文件两两比较是否相同
文件的数据提前载入,在内存里比较效率不就高了?

多文件两两文件逐字节比较的速度有办法可以超过计算哈希和吗?

Comment

windows中有自带的哈希检验工具,b站搜搜看  posted 2025-7-9 19:43

3208

Threads

7845

Posts

51

Reputation

Show all posts

hbghlyj posted 2025-7-9 22:29
你提到“文件的数据提前载入,在内存里比较效率不就高了?”。

对于小文件: 是的,如果文件足够小,可以完全加载到内存中进行比较,无论是哈希计算还是逐字节比较都会非常快,因为避免了磁盘 I/O 的频繁操作。

对于大文件: 绝大多数情况下,文件不可能一次性全部载入内存。无论是哈希计算还是逐字节比较,都需要分块(chunk by chunk)读取文件内容。文件 I/O (从磁盘读取数据) 通常是这两种操作中最耗时的部分,而不是内存中的计算或比较。

3208

Threads

7845

Posts

51

Reputation

Show all posts

hbghlyj posted 2025-7-9 22:35

先计算哈希和再判断哈希值是否相等,比直接进行多文件两两逐字节比较要快得多

减少重复读取: 对于哈希比较,你只需要读取每个文件一次来计算其哈希值。然后,你只需比较这些短小的哈希值。而对于逐字节两两比较,每个文件可能需要被读取多次(例如,文件 A 需要和 B、C、D 比较,文件 B 需要和 C、D 比较等等)。对于 N 个文件的两两比较,你需要进行 N×(N−1)/2 次比较。如果两个文件完全相同,则需要读取并比较两个文件的所有字节,这会非常耗时
original poster 大白兔奶糖 posted 2025-7-10 16:04
hbghlyj 发表于 2025-7-9 22:35
减少重复读取: 对于哈希比较,你只需要读取每个文件一次来计算其哈希值。然后,你只需比较这些短小的哈希值 ...
那么哈希值提前载入内存,哈希值相等再逐字节比较速度快还是直接逐字节速度快?

Quick Reply

Advanced Mode
B Color Image Link Quote Code Smilies
You have to log in before you can reply Login | Register account

$\LaTeX$ formula tutorial

Mobile version

2025-7-12 23:00 GMT+8

Powered by Discuz!

Processed in 0.014842 seconds, 29 queries