我有一个程序可以计算一组非常大的文件的一些统计数据。在将文件读入 ram 时,我的进程是 IO 绑定约 30 秒,然后我的进程是 cpu 绑定约 60 秒,因为我分析缓冲区
for ( i=0; i<n; ++i )
{
read_file_into_buffer(filename[i], buffer) // ~30 seconds
analyze_buffer(buffer) // ~60 seconds
}
无论如何,在我将文件读入缓冲区之前,是否有请求操作系统开始为我将文件加载到虚拟内存中。类似于以下内容?
for ( i=0; i<n; ++i )
{
read_file_into_buffer(filename[i], buffer)
if (i<n-1)
tell_os_i_will_want_to_read_this_soon(filename[i+1]);
analyze_buffer(buffer)
}