我需要比较高质量的数据,以便平等。 我需要比较一下每秒钟的很多奶粉。 每一物体的长度相同,可能而且可能只在不知的位置上略有不同。
Timings below show that using ==
operator is very fast if there is a difference near the start of the data, and significantly slower if differences are located towards the end.
>>> import os
>>> s = os.urandom(1600*1200 - 1)
>>> Aimg = b"A" + s
>>> Bimg = b"B" + s
>>> img1 = s + b"1"
>>> img2 = s + b"2"
>>> %timeit Aimg == Bimg
61.8 ns ± 0.484 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
>>> %timeit img1 == img2
159 µs ± 2.83 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
在我使用的情况下,差异可能位于中间或末端的斜线上(案文:这是不压缩的形象数据)。 我寻找一种办法,加快使用洗衣或制片。 使用md5的速度较慢,但沙尔建筑在<代码>hash上确实加快了事情。
>>> %timeit img1 == img2
160 µs ± 5.96 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
>>> %timeit hash(img1) == hash(img2) and img1 == img2
236 ns ± 5.91 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
对该散列的技术细节感兴趣的是,在<代码>hash(a)=h(b)时,<代码>a = b 是