当前位置:  技术问答>linux和unix

使用标准IO的误区

    来源: 互联网  发布时间:2016-10-01

    本文导语:   原创  使用标准IO的误区 收藏 不知道大家有没有这种习惯,在使用标准IO库写文件时还喜欢另外开辟一个大的缓存区来缓存要写的数据,待这个大的缓存区满了以后再调用 fwrite/fread来进行IO操作,以为这样可以减...

 原创  使用标准IO的误区 收藏

不知道大家有没有这种习惯,在使用标准IO库写文件时还喜欢另外开辟一个大的缓存区来缓存要写的数据,待这个大的缓存区满了以后再调用 fwrite/fread来进行IO操作,以为这样可以减少IO次数。但实际情况却不是这样的,因为标准IO中已经有一个缓存了,缓存的大小设置为操作系统一次写硬盘的字符数。上述做法,相当于在用户态环境下多做了一次无无谓的内存拷贝操作。

      我在linux环境下写了一个例子来验证我的想法,例子:

/***************************************************************** 
* Copyright (c) 2010, All rights reserved. 
* 文件摘要:该代码文件用来验证使用标准IO/多块标准IO/直接系统调用 
* 为了简洁起见代码中没有做错误处理 
*****************************************************************/  
#include   
#include   
#include   
#include   
using namespace std;  
  
#define LOOP_TIME 9999999     
#define OUTPUT_FILE "/data/cjdev/jiangf/io.output"  
char strBuffer[1024];  
  
/*单纯使用标准io库*/  
void stdioLib()  
{  
    struct timeval tpBegin;  
    struct timeval tpEnd;  
    memset(&tpBegin,0,sizeof(tpBegin));  
    memset(&tpEnd,0,sizeof(tpEnd));  
      
    gettimeofday(&tpBegin,NULL);  
    FILE *fp=fopen("/data/cjdev/jiangf/io.output1","w");  
    for(int i=0;i

    
 
 

您可能感兴趣的文章:

  • SQL Server误区30日谈 第27天 使用BACKUP WITH CHECKSUM可以替代DBCC CheckDB
  • SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV
  • 如何在Fedora Core 3中使用非标准分辨率?
  • 请问,使用GTK如何显示标准的浏览文件夹的对话框?HILDON提供吗?
  • uclinux上如何使用标准模板库STL?
  • 各位大侠,请推荐几本在UNIX环境下使用标准C语言编程的好书.谢谢啊!!!
  • 如何使用ar命令检查在标准的C库中收藏了多少与printf相关的函数
  • 怎样只使用unix的标准工具找出一个文本文件的最长的一行?
  • 使用标准SAX解析XML文档如何获取文档编码信息及约束它的dtd文件路径.
  • MSSQL 检查所使用的语句是否符合标准
  • 无法使用管道命令或重定向标准输出
  • gvim下如何使用已经用Ctags生成好的C++标准库的Tags?
  • WEB标准网页布局中尽量不要使用的HTML标签
  • 调查在unix/linux 下用c编程时你们使用c的stdio库 还是C++的标准流库?
  • 简单问题:Unix下使用extern关键字的标准C程序如何编译?比如...
  • c#标准idispose模式使用示例
  • 如何查看标准的库函数详细的使用方法?
  • 使用sendmail发信时,subject出现乱码的问题。(使用了标准的base64编码,outlook的时候看是正常编码,别的服务器还是有乱码例如mozilla收
  • python标准日志模块logging的使用方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3