Sam*_*ron 6 c# optimization identity
继这个问题:用于确定文件身份的算法
回顾:我正在寻找一种用于确定文件标识的廉价算法,该算法在绝大多数情况下都有效.
我继续实施了一个算法,它为每个文件提供了" 非常独特 "的哈希值.
我的算法的工作方式是:
对于小于特定阈值的文件,我使用标识哈希的完整文件内容.
对于大于阈值的文件,我采用X大小的随机N个样本.
我在散列数据中包含了文件大小.(意味着所有具有不同大小的文件会导致不同的哈希值)
问题:
我应该为N和X选择什么值(我应该选择多少随机样本的大小?)我选择了4个样本,每个样本8K,并且无法算法算法.我发现增加样本量会迅速降低算法的速度(导致搜索非常昂贵)
数学一:我的文件需要多少才能让这个算法爆炸.(2个具有相同长度的不同文件最终具有相同的哈希值)
优化之一:有没有什么方法可以优化我的具体实现来提高吞吐量(我似乎能够在我的系统上每秒做大约100个文件).
这个实现看起来是否合理?你能想到任何真实世界的例子吗?(我的重点是媒体文件)
相关信息:
谢谢你的帮助!
这是因为它们很可能因文件而异。如果您考虑 BMP,它可能具有相当标准的标头(如 800x600 图像、24 位、空休息),因此您可能需要稍微超出标头以获得差异化数据。问题是标题的大小差异很大。
最后一个块用于将数据附加到原始文件格式。
即使如此,除非你很幸运,否则你会错误地将某些文件识别为相同的文件(例如 SQL Server 数据库文件,仅在几次插入后它就是 1:1 备份副本;除了 SS 确实写入了时间戳..)