作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设我有这个 170mb 的文件(大约 1.8 亿字节)。我需要做的是创建一个表,其中列出:
假设两件事:
我应该如何采样文件并保存所需的信息?
这里有一些(非常)慢的建议:
这有点像对文件进行统计。
注意:我知道对文件进行采样会生成大量数据(根据经验,大约 22Gb),而且我知道发布的任何解决方案都需要一些时间才能完成。我需要最有效的保存过程
最佳答案
如果您还散列数据并将 4096 字节段的散列存储在数据库中,然后与它进行比较,则您提供的第一个解决方案的速度可能会大大加快。与 4096 字节长的字符串相比需要永远,但这会快得多:
For each 4096-byte segment in the file
Hash the segment into something short (even MD5 is fine, and it's quick)
Look up the hash in your database
If it exists (segment may have already been found)
Compare the actual segment to see if there's a match
If it doesn't exist
It's a new segment - save it to your database
散列段不是免费的,但它非常便宜,并且散列之间的比较比重复地相互比较完整字节段要便宜几个数量级。哈希对许多应用程序都很有用 - 这绝对是其中之一。
关于database - 逻辑 : Best way to sample & count bytes of a 100MB+ file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3053929/
我是一名优秀的程序员,十分优秀!