优化内存空间,提升读写速度

文章链接: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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值