gpt4 book ai didi

performance - fseek()如何在文件系统中实现?

转载 作者:行者123 更新时间:2023-12-03 12:17:04 29 4
gpt4 key购买 nike

这不是一个纯粹的编程问题,但是它会影响使用fseek()的程序的性能,因此了解其工作原理非常重要。一点免责声明,以便它不会被关闭。

我想知道在文件中间插入数据的效率如何。假设我有一个具有1MB数据的文件,然后以512KB的偏移量插入了一些文件。与在文件末尾附加我的数据相比,效率如何?为了使示例更完整,可以说我要插入16KB数据。

我知道答案因文件系统而异,但是我认为常见文件系统中使用的技术非常相似,我只想正确地理解它。

最佳答案

(免责声明:我只想向这个有趣的讨论添加一些提示)
恕我直言,有一些事情要考虑:

1)fseek不是主要系统服务,而是库函数。要评估其性能,我们必须考虑如何实现文件流库。通常,文件I / O库在用户空间中添加了一层缓冲,因此,如果目标位置在当前缓冲区的内部或外部,则fseek的性能可能会有所不同。同样,I / O库使用的系统服务可能会有很大差异。即在某些系统上,如果可能,库会大量使用文件内存映射。

2)如您所说,不同的文件系统的行为可能完全不同。特别是,我希望事务性文件系统必须做一些非常聪明甚至昂贵的事情,以准备对文件中间的中止写入操作进行可能的回滚。

3)现代OS具有非常积极的缓存算法。缓存中可能已经存在“feekked”文件,因此操作变得更快。但是,如果其他进程产生的整个文件系统 Activity 变得很重要,它们可能会降级很多。

任何意见?

关于performance - fseek()如何在文件系统中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2438953/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com