概述
文章链接:https://codemouse.online/archives/2020-03-28201251
posix_fadvise与fallocate
#include <fcntl.h>
int posix_fadvise(int fd, off_t offset, off_t len, int advice);
int fallocate(int fd, int mode, off_t offset, off_t len);
advice的参数:
标签 | 描述 |
---|---|
POSIX_FADV_NORMAL | 表示该应用程序没有建议提供有关其指定的数据访问模式。如果没有意见,给出了一个打开的文件,这是默认的假设。 |
POSIX_FADV_SEQUENTIAL | 该应用程序需要访问指定的数据顺序(与以前高的人读低偏移)。 |
POSIX_FADV_RANDOM | 将指定的数据将会以随机顺序进行访问。 |
POSIX_FADV_NOREUSE | 将指定的数据将只访问一次。 |
POSIX_FADV_WILLNEED | 将指定的数据将在不久的将来访问。 |
POSIX_FADV_DONTNEED | 指定的数据不会在短期内被访问。 |
优化内存空间,提升读写速度
提前告知内核需要这么大的空间,提前准备一下。
因为是一个全新的区块,要写的数据一定是连续的,而之前的区块有各种各样的数据,数据存放就不连续,速度自然会有所降低。
// TODO tell the kernel that we will need the input file
posix_fadvise(src_fd, 0, stat_buf.st_size, POSIX_FADV_WILLNEED);
// more efficient space allocation via fallocate for dst file
if (fallocate(dst_fd, 0, 0, stat_buf.st_size) == -1)
perror("destination file fallocate");
最后
以上就是淡然短靴为你收集整理的优化内存空间,提升读写速度的全部内容,希望文章能够帮你解决优化内存空间,提升读写速度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复