我有一个程序可以计算一组非常大的文件的一些统计信息。在将文件读入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)
}