File 关于文件I/O的困惑

File 关于文件I/O的困惑,file,io,File,Io,一位面试官问我,问题很简单,从100万个整数(32位)中找出前100名。 当我解决这个问题时,我想如果我把所有100万个整数放入内存,那将占用4 MB的空间 我的问题可能与面试问题无关,但这里是: 如果100万个整数存储在一个文件num.txt,或者更进一步,我想读取文件的所有内容,并将它们放入内存(可能将它们存储在一个数组中),那么需要多少IO?如果扫描,在这个问题中你想做什么。 你想要一个数组,或者一个优先级队列,它包含100个整数,并且只存储你看到的最大的100个整数 您不想一次只接收一页

一位面试官问我,问题很简单,
从100万个整数(32位)中找出前100名。

当我解决这个问题时,我想如果我
把所有100万个整数放入内存
,那将占用
4 MB的空间

我的问题可能与面试问题无关,但这里是:


如果100万个整数存储在一个文件
num.txt
,或者更进一步,我想
读取文件的所有内容
,并
将它们放入内存
(可能将它们存储在一个数组中),那么
需要多少IO?

如果扫描,在这个问题中你想做什么。 你想要一个数组,或者一个优先级队列,它包含100个整数,并且只存储你看到的最大的100个整数

您不想一次只接收一页文件,可能需要使用
mmap
之类的方法


IO的数量将为1mio大小。整数除以页面大小。

实际上,先生,最大值为3.8兆字节。除非每个整数都使用所有32位小数,否则您可能会得到更小的值。对吗?假设百万位数中有一半只有16位长,那么只有2.86102295兆字节。@DadeLamkins,是的,你是对的,但我想知道的是,如果我想从文件中读取所有32位整数,需要多少IO。你的意思是,如果我的页面大小是
4k
,那么IO将是
10^6*4/4k
,对吗?