无缓冲IO和缓冲IO
来源:互联网 发布:手机端淘宝详情页高度 编辑:程序博客网 时间:2024/05/16 06:13
不带缓存的I/O: read,write,open......
标准(带缓存的)I/O: fgets,fread,fwrite.....
这里使用两个对应的函数进行比较:
ssize_t write(int filedes, const void *buff, size_t nbytes)
size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *fp)
二、标准I/O对每个I/O流自动进行缓存管理(标准I/O函数通常调用malloc来分配缓存)提供了三种类型的缓存:
1) 全缓存:当填满标准I/O缓存后才执行I/O操作,磁盘上的文件通常是全缓存的。
2) 行缓存:当输入输出遇到新行符或缓存满时,才由标准I/O库执行实际I/O操作,stdin、stdout通常是行缓存的。
3) 无缓存:相当于read、write了,stderr通常是无缓存的,因为它必须尽快输出。
一般由系统选择缓存的长度,并自动分配,标准I/O库在关闭流的时候自动释放缓存。
也可以使用函数fflush()将流所有未写的数据送入(刷新)到内核(内核缓冲区),fsync()将所有内核缓冲区的数据写到文件(磁盘)。
在标准I/O库中也有引入缓存管理而带来的缺点就是效率问题。例如当使用每次一行函数fgets和fputs时,通常需要复制两次数据:一次是在内核和标准I/O缓存之间(当调用read和write时),第二次是在标准I/O缓存(通常系统分配和管理)和用户程序中的行缓存(fgets的参数就需要一个用户行缓存指针)之间。
- 无缓冲IO和缓冲IO
- java IO-节点流和缓冲流性能对比
- 无缓冲IO效率测试
- Linux 标准IO库 全缓冲、行缓冲、无缓冲
- 使用缓冲输入流和缓冲输出流复制文件
- 黑马程序员——JAVA基础------IO流(四)----字节字符转换流和缓冲流
- 8 标准IO之fflush,无缓冲,fseek,rewind
- 标准IO缓冲
- IO之缓冲流
- java io 缓冲流
- IO缓冲流
- IO之缓冲流
- IO Streams:缓冲流
- 【操作系统】IO 缓冲技术
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- 在Ogre中使用OIS的两种模式(非缓冲输入和缓冲输入)
- OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
- Android样式的开发(四):drawable汇总篇
- Aidl的一个简单学习
- 【VS开发】【计算机视觉】OpenCV读写xml文件《C++版本》
- 微信checkbox慢
- Kafka实战-简单示例
- 无缓冲IO和缓冲IO
- MySQL MySql连接数与线程池
- python 下载或者直接读取csv文件
- Android控件入门2
- 相应redis中key值过期相应机制
- 统一寻址
- 在Django query中减少搜索数据库的次数
- JavaScript面试总结
- nginx+uwsgi+django 搭建web