估计大文本文件的大小

问题描述 投票:-2回答:1

从关于在此处从文本文件中选择n个随机行的问题的评论开始:

Select random lines from a file

用户评论说,他们使用shuf命令在不到一分钟的时间内从具有780亿行的文本文件中随机选择行。

[我从互联网上的各种来源中看到,根据元数据的不同,人们的文本文件大小从100GB-200GB-300GB不等,仅为7-15亿行。

假设我们有:

  1. 包含ASCII字符的文本文件,我们在每100个字符之后为换行符定义一个换行符。该文件有780亿行。

  2. 我们的系统计算能力为:

    a。内存-16GB

    b。处理器-2.5 GHz Intel Core i7

    c。磁盘-500GB SSD

我对:

感到好奇
  1. 文本文件的估计大小是多少?

这还将取决于不同的操作系统如何在内存级别编码和存储字符吗?如果是,那么它将多少计入尺寸计算?

  1. 理想情况下,多少时间[bash-在系统上运行(具有上述规格)-使用shuf命令处理此文本文件将花费多少时间?

  2. 如果文本文件大小以TB为单位,那么如何将数据提供给系统?

    shuf

  3. 将如何在上述系统中以最大效率处理如此大的文件。

shuf

我的系统中的性能(上述规格):
  • [每行100个字符:1行

    文件大小:〜100Bytes

    时间:实数0m0.025s用户0m0.007s sys 0m0.013s

  • 每行100个字符:100,000行

    文件大小:〜10MB

    TIME:real 0m0.122s用户0m0.036s sys 0m0.080s

  • 每行100个字符:100,000,000行

    文件大小:〜10GB

    [时间:真实9分37.108秒。用户2m22.011s sys 3m3.659s

[nit:对于那些感兴趣的人,这里有一些相同的reddit meme线程:https://www.reddit.com/r/ProgrammerHumor/comments/grsreg/shuf_go_brrr/https://www.reddit.com/r/ProgrammerHumor/comments/groe6y/78_billion_prayers/]

编辑#1:提炼问题以获得更多细节。根据评论和发现添加更多资源。

编辑#2:在我的系统中为不同的文本文件大小增加了shuf性能]

bash shell random text-processing large-files
1个回答
0
投票
并非您引用的帖子中的所有评论者都对性能表示同意。虽然一个用户评论了超快的处理速度(78B是一分钟),但另一位评论者却报告了慢得多的结果(13分钟内从500M行中的1000行)。

您可以尝试以下操作:(用您喜欢的尺寸替换NNN):seq 1 NNN> 1;时间shuf 1> / dev / null

我正在:*对于N = 1,000,000时间= 0.2秒*对于N = 10,000,000时间= 3.5秒

都在13分钟内符合5亿行。

请注意,该操作受CPU限制为1000万行。如果文件大小超出内存,则会变慢。

底线,最有可能的测量误差

© www.soinside.com 2019 - 2024. All rights reserved.