在.tar / .tar.gz档案中列出(或统计)文件:时间复杂度是多少?

时间:2016-08-23 18:35:42

标签: algorithm tar

在.tar存档中列出文件名的时间复杂度是多少? 是O(size(file))还是O(# of files in archive)

根据这篇维基百科文章(https://en.wikipedia.org/wiki/Tar_(computing)),tar档案不支持随机访问,为了列出文件名“必须阅读整个档案”,我将其理解为{{1} }。另一方面,tar中的每个文件都有一个标题,用于指定文件的长度,因此我们可以为其中的每个文件执行一次hdd搜索,因此在这种情况下,时间复杂度仅为O(size(file))。 / p>

那么.tar.gz档案怎么样呢?我想在这种情况下,我们将无法进行多次搜索而无需解压缩,无论如何都需要O(# of files in archive)

1 个答案:

答案 0 :(得分:0)

取决于您的存储空间!

未压缩的tar

对于磁带存档(你知道," tar" s),线性到字节长度,无论如何,因为快进仍然是你需要快进的长度的线性。 / p>

对于现代存储上的小文件:相同;你不要问你的SSD有20个字节的存储空间。你一次得到4kB;理论上,这意味着您可以立即跳过该1GB文件。在实践中,我的经验告诉我,没有发生;老实说,我不知道为什么。对我来说," next_block_after"功能应该向前跳过。 耸肩

压缩tar

是的,一般来说,您必须解压缩以了解内容在某个地方寻找多长时间。我不认为有一种压缩格式可以保留某种表格,其中包含"中间"长度加快寻求。