系统调用与库函数对于不同buffer size写文件效率对比
来源:互联网 发布:选软件网 编辑:程序博客网 时间:2024/06/05 16:39
系统调用与库函数对于不同bufSize写文件耗时对比
By wangshudian@ gmail.com
一、实验说明
函数原型:
int write(int fd, char *buf, unsigned bufSize);
int fwrite(char *ptr, unsigned size, unsigned n, FILE *fp);
函数特点:
系统调用write是unbuffered的;
库函数fwrite是buffered的。
参考文献:
李梦雨《文件IO函数和标准IO库函数的读写效率研究》
下面基本书对系统调用与库函数的联系和区别也有讲解:
《C专家编程》
《程序员的自我修养》
《Beginning Linux Programming》
二、实验数据
我上传到附件了:
http://download.csdn.net/detail/autoca/4349293
三、观察分析
(1)对于系统调用write,当入参buffer size远小于文件系统的block size(4096字节)时,效率极低;当入参buffer size接近或大于block size时效率接近最优。
(2)对于库函数fwrite,入参buffer size(size*n)的变化对写文件效率影响不明显,其效率高于write最优值的1/2(想必是fwrite对write做了封装,多了一层调用,于是表现出1/2的关系)。
三、实验结论
如果是多次循环,每次只写少量字符,那么库函数效率高。
如果循环次数少,每次都写大块数据,那么系统调用效率高。
在对效率有特殊要求的场合,建议使用write且必须选取最优buffer size。
对于一般应用,建议使用标准库函数,无需多虑。
- 系统调用与库函数对于不同buffer size写文件效率对比
- 文件操作(库函数与系统调用)
- 系统调用与库函数
- 系统调用与库函数
- 库函数与系统调用
- 系统调用与库函数
- 库函数与系统调用
- 库函数与系统调用
- 系统调用与库函数
- 系统调用与库函数
- 系统调用与库函数调用
- 系统调用与库函数调用
- 【2016/1】文件操作 file_IO 系统调用与库函数
- (转)库函数 与 系统调用
- 库函数与系统调用区别
- Linux - 系统调用与库函数
- C语言文件操作标准库函数与Linux系统函数效率比较
- 深入理解系统调用与库函数调用!
- python操作redis简单例子
- 关于二叉树的相关操作
- 全点对最短路径
- 新建用户界面继承ListUI使用KDTable报错
- Android开源项目源代码分享
- 系统调用与库函数对于不同buffer size写文件效率对比
- 面试题 06162012 [1]
- 代码获取编码规则的最新编码
- 如何通过代码终止工作流实例
- Struts2 ValueStack & ActionContext & OGNL 关系
- AS的名称空间/命名空间 On Actionscript's Namespaces
- 二次开发单据在“特殊数据权限”的业务对象授权列表中不显示
- 一个相当详细的MINI2440按键驱动详解
- web-sorrow