我是靠谱客的博主 淡然短靴,最近开发中收集的这篇文章主要介绍优化内存空间,提升读写速度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是淡然短靴为你收集整理的优化内存空间,提升读写速度的全部内容,希望文章能够帮你解决优化内存空间,提升读写速度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部