如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之八
处理400G数据,用时的估算:
1、读一遍:400G/.03G/60/60= 3.7小时。
2、写一遍:400G/.01G/60/60= 11.11小时。
其中.03、.01,分别是读、写硬盘的速度。
验证法中,有将原始数据中已经读出的数据标特殊值的要求。标记方式有二:
1、对取出的一亿数循环。用它们在原始数据中的位置,直接定位并写标记。
这样的用时为:100000000*0.01/60/60/24= 11.57天。其中,0.01是硬盘的寻址时间,单位是秒。
这样的用时,也太多了。
2、每次读一块数据。把该块数据内取出的数据都标上特殊标记。再整块写加硬盘。
(这要先将一亿数据,按原始数据中的位置值排序。才好一块一块填写)
用时即读写一遍全部数据。时间=3.7+11.11=14.8小时。