现在我正在使用fread()来读取一个文件,但是在其他语言中,fread()是低效的。这在C中也是一样的吗?如果是这样,如何实现更快的文件读取速度?
发布于 2010-06-09 08:11:38
如果您愿意超越C规范而编写特定于操作系统的代码,那么内存映射通常被认为是最有效的方法。
对于Posix,请查看mmap
;对于Windows,请查看OpenFileMapping
发布于 2010-06-09 07:41:16
发布于 2010-06-09 08:21:47
如果fread
很慢,那是因为它向底层操作系统机制添加了额外的层,以便从文件中读取数据,而这些层干扰了特定程序使用fread
的方式。换句话说,它慢是因为你没有以优化过的方式使用它。
话虽如此,通过理解操作系统I/O函数是如何工作的,并提供您自己的抽象来更好地处理程序的特定I/O访问模式,可以更快地读取文件。大多数情况下,您可以使用内存映射文件来做到这一点。
但是,如果您正在运行的机器达到了极限,那么内存映射可能是不够的。在这一点上,真正由您决定如何优化您的I/O代码。
https://stackoverflow.com/questions/3002122
复制相似问题