首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C中读取文件的速度最快

在C中读取文件的速度最快
EN

Stack Overflow用户
提问于 2010-06-09 07:35:38
回答 6查看 37.4K关注 0票数 23

现在我正在使用fread()来读取一个文件,但是在其他语言中,fread()是低效的。这在C中也是一样的吗?如果是这样,如何实现更快的文件读取速度?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-09 08:11:38

如果您愿意超越C规范而编写特定于操作系统的代码,那么内存映射通常被认为是最有效的方法。

对于Posix,请查看mmap;对于Windows,请查看OpenFileMapping

票数 18
EN

Stack Overflow用户

发布于 2010-06-09 07:41:16

我在想read系统调用。

请记住,fread是“read”的包装器。

另一方面,fread有一个内部缓冲区,所以'read‘可能更快,但我认为'fread’会更有效率。

票数 1
EN

Stack Overflow用户

发布于 2010-06-09 08:21:47

如果fread很慢,那是因为它向底层操作系统机制添加了额外的层,以便从文件中读取数据,而这些层干扰了特定程序使用fread的方式。换句话说,它慢是因为你没有以优化过的方式使用它。

话虽如此,通过理解操作系统I/O函数是如何工作的,并提供您自己的抽象来更好地处理程序的特定I/O访问模式,可以更快地读取文件。大多数情况下,您可以使用内存映射文件来做到这一点。

但是,如果您正在运行的机器达到了极限,那么内存映射可能是不够的。在这一点上,真正由您决定如何优化您的I/O代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3002122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档