首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UNIX上读取文件比编写文件更快吗?

在UNIX上读取文件比编写文件更快吗?
EN

Unix & Linux用户
提问于 2014-08-22 18:11:43
回答 2查看 3.8K关注 0票数 8

一个相当迟钝的性能瓶颈已经归结为这个非常小的查询。我做了一些实证分析,我认为我可能会受到磁盘缓存策略的影响。从根本上讲(如果禁用了磁盘缓存),写入文件的速度、速度或速度是否与读取文件相同?我假设答案将取决于碎片(和文件大小),但是编写文件的操作必须对下一个空闲块的位置进行额外的查找,而不仅仅是跟踪指向它的指针。

EN

回答 2

Unix & Linux用户

发布于 2014-08-22 23:04:21

那得看情况。这个问题没有一般的答案。

在没有缓存的情况下,写入磁盘文件通常比读取要慢得多。这与操作系统无关,与硬件有关:硬盘和固态媒体的读取速度都比它们写的快。第二个因素与文件系统结构有关:读取只需要遍历目录树和块列表到数据,然后读取数据,而写入则需要执行相同的遍历,然后写入数据,然后更新一些元数据。

当缓存发挥作用时,情况就会发生变化。读取缓存中的数据非常快,但是读取不在缓存中的数据必须从磁盘中取出。操作系统可能会尝试提前读取,但这只在非常特殊的情况下(主要是从文件中顺序读取)起作用。另一方面,只要数据量不太大,写入就可以是近乎瞬时的,因为数据只写到内存缓冲区中。缓冲区最终必须写入磁盘,但到那时,您的应用程序已经开始执行更多的任务。

票数 8
EN

Unix & Linux用户

发布于 2014-08-22 19:33:18

写作应该更快。

空闲块列表保存在内存中,因此找到下一个空闲块将非常快。除非您是以同步模式编写,否则当您尝试编写某些东西时,它只需将数据复制到内核缓冲区中并对写入进行队列;它不需要等待I/O的完成。

另一方面,读取必须等待I/O完成,因为调用者在数据到达之前什么也做不了。

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

https://unix.stackexchange.com/questions/151665

复制
相关文章

相似问题

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