python用函数比较大小_Python瓶颈;确定文件比较函数的最佳块大小

2022-09-17 10:16:13

我在写一个文件比较函数。我知道filecmp.cmp,但在我的数据集中,很多文件都是相同的,所以我认为与其将每个潜在的匹配项进行比较,不如实现一个多文件比较,这样可以同时比较所有文件。(另外,由于我是python的新手,所以我认为这是一个很好的学习练习。)到目前为止,它似乎还不错,事实上在某些输入上它比unix的cmp(这实际上让我有点担心,因为我不太相信这是可能的,因此我认为我的实现可能有问题!)在

所以,我已经编写了代码,但我现在正在尝试确定每次读取的理想块大小。我的一部分想法是,无论如何,检索到的数据都必须进行比较,因此,一次进入内存越多越好,但我想知道python数据结构是否存在限制,可能会影响到这一点。例如,我在维护可能很大的块列表,并使用字典,其中键是已读的块。在

那么,在python内置的数据结构中,我应该知道哪些可能会影响到这一点,或者这是只由硬件决定,并且应该通过在特定机器上进行分析来确定的?在

读了这段话,我意识到这不是最清楚的问题,但(尽管尝试过)我不知道如何澄清它。如果能让事情更清楚的话,我很乐意发布我的代码,但是它比你的平均代码样本要长一点(虽然不是太糟糕)。如需进一步澄清,请评论。在

谢谢。在

更新回复。SHA1:

我在两个完全相同的输入文件上测试了我的算法与SHA1,每个文件运行100次。我知道这不是一个彻底的测试,但结果是不同的,足以值得评论。在

(在这两个测试中,计算机都没有承受任何其他负载,尽管我在评论中说了些什么,但它不是在目标机器上运行的,而是在一个规格相当合理的机器上运行的。这两个测试都有可能在两个线程中运行;也就是说,SHA1在两个线程中发生,并且为我的线程启动了两个线程,但是由于实现的原因,只会使用一个线程。单线程SHA1版本需要更长的时间。两个测试同时读取相同大小的块。给出了三组结果。)

现在我很困惑。是评论(回复。是吗?因此,这是一个错误的实现的指示,或是其他事情正在发生?在

SHA1:real 5m35.865s 6m17.737s 5m57.010s

user 10m18.963s 11m34.178s 10m58.760s

sys 0m47.030s 0m52.707s 0m47.807s

我的:

^{pr2}$

  • 作者:爽shuang
  • 原文链接:https://blog.csdn.net/weixin_29285605/article/details/112941259
    更新时间:2022-09-17 10:16:13