我不擅长数学,我在这里张贴我的问题。希望,不会得到吨的不喜欢。我有很多大文本从200.000到1.000.000字符在他们每个人。我需要比较文本找到重复。我决定使用指纹(md5散列),然后比较指纹。但后来我意识到一种新的比较方式-计数字符在文本中。那么,哪一个工作得更快,哪一个CPU处理能力更低呢?P.S.重要提示:不能有2个或多个具有相同字符计数的不同文本
rhfm7lfc1#
获取字符串的长度会快得多,并且使用的cpu能力也会更少这是因为它只是一个任务,对Python来说很容易,并且具有作为一个内置函数的优点。然而,要预制一个md5,它需要对每个字符进行计算,以产生整体散列,这将花费更长的时间。
9udxz4iz2#
如果文本是完全重复的,你可以得到哈希值,甚至更快,文本的长度和排序的长度(由文本的id或文本引用本身)识别长度(或哈希值)的重复。对于排序,您可以使用快速排序算法,例如quicksort。事实上,甚至有一个特殊的 *nix命令行实用程序用于排序支持重复删除的项目,它是sort -u。如果文本是近似重复的,而不是完全相同的,事情就更难了,你需要使用特殊的重复感知哈希算法,并使用它们的相似性度量对结果哈希进行排序,这样如果两个被比较的项目之间的距离小于某个相似性阈值,它们就会计算近似的东西。然后再次传递结果排序列表,并获得接近的副本。
sort -u
2条答案
按热度按时间rhfm7lfc1#
获取字符串的长度会快得多,并且使用的cpu能力也会更少
这是因为它只是一个任务,对Python来说很容易,并且具有作为一个内置函数的优点。然而,要预制一个md5,它需要对每个字符进行计算,以产生整体散列,这将花费更长的时间。
9udxz4iz2#
如果文本是完全重复的,你可以得到哈希值,甚至更快,文本的长度和排序的长度(由文本的id或文本引用本身)识别长度(或哈希值)的重复。
对于排序,您可以使用快速排序算法,例如quicksort。
事实上,甚至有一个特殊的 *nix命令行实用程序用于排序支持重复删除的项目,它是
sort -u
。如果文本是近似重复的,而不是完全相同的,事情就更难了,你需要使用特殊的重复感知哈希算法,并使用它们的相似性度量对结果哈希进行排序,这样如果两个被比较的项目之间的距离小于某个相似性阈值,它们就会计算近似的东西。
然后再次传递结果排序列表,并获得接近的副本。