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

linux下读写文件之速度疑惑

    来源: 互联网  发布时间:2016-07-02

    本文导语:  如题。 小弟在Linux下写了一个测试读写文件速度的程序。先写文件,然后再读取。 写文件是用fwrite函数,读文件用fread函数,时间的截取用gettimeofday函数。 取时间方式是:先打开文件,然后取开始时间,写/读,然后...

如题。
小弟在Linux下写了一个测试读写文件速度的程序。先写文件,然后再读取。
写文件是用fwrite函数,读文件用fread函数,时间的截取用gettimeofday函数。
取时间方式是:先打开文件,然后取开始时间,写/读,然后关掉文件,再取结束时间,算得写/读文件所需时间。
写完文件后,用sync(),刷一下缓冲,然后再close掉。
读的时候就直接fopen,然后fread。

现在的问题是:
1.读/写 小文件速度较慢,大文件速度比较快
2.写的速度比较慢(相对来说比较正常,用U盘来测,3.X M/S),读的速度非常快800~900多M/S,怀疑是读的时候,直接从缓冲区中读出了。其中一个现象是写文件在本地磁盘,写的速度是三十几兆/S,读的速度是870多兆/S;写文件在U盘上,写的速度是3.x/S,读的速度是接近900兆/S。

写的时候用和不用sync()差别很大(10倍左右),说明用了之后是把缓冲区中的数据写到磁盘上去了。
读的时候是否也有相应的函数把之前打开的缓冲区清掉呢,真正的是从磁盘上读进来?

|
Unix systems allow the deferred writes of dirty pages into block devices,
 because this noticeably improves system performance. Several write operations 
on a page in cache could be satisfied by just one slow physical update of the 
corresponding disk sectors. Moreover, write operations are less critical than 
read operations, because a process is usually not suspended due to delayed 
writings, while it is most often suspended because of delayed reads. Thanks to 
deferred writes, each physical block device will service, on the average, many 
more read requests than write ones.

Excerpt from ULK3 ch15.3

|
如果,你要做这种测试..
不要用f开关的函数.


read write 缓冲自己定

fread读的时候,会自动清空的.
磁盘读的速度,本来就比写快.


sync只是强制同步文件...也就是强制把文件所有改动同步到硬盘.




要真的写做测试..


建议用mmap

|
不要用f

用read,write
sync只是强制同步.


读比来就比写快..快得多.
真的想测试 用mmap

|
这个可能跟你每次读写的块的大小也有关系,这一点在APUE2nd的第三章 FILE I/O和第五章 Standard I/O Library有说。

还有那本书里提到的buffering 和 unbuffer的差异

    
 
 

您可能感兴趣的文章:

  • unix/Linux下c++ boost thread库读写锁介绍
  • linux 下能否读写.dbf 或者.xls格式的文件,怎样读写?高手指点,拜谢!!!
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • 串口读写,双方同时读写控制问题(linux内核)。
  • linux多线程无法进行阻塞方式的读写操作
  • linux下读写硬件
  • 有谁知道,Linux下文件的读写原理是怎样的?急
  • 一台linux机子上的程序要读写另外一台linux机子上的文件,该怎么做呢?
  • 如何在内核模块中对linux字符驱动进行读写呢
  • linux环境下SD卡如何读写
  • linux下面configlib库的读写问题
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • 在linux下有没有想windows下vc一样读写ini 配置文件的库或函数
  • 怎么使用 linux 下的 libxml2 库读写 xml 文件和设置属性
  • 有关linux下读写串口的问题,在线等待!
  • 怎样将linux系统底下一个文件夹的只读属性改为可读写的属性?
  • 急求 linux下串口同时进行读写问题解决方法
  • Linux 中对文件的读写的问题
  • Linux内核中文件进行读写操作的问题
  • linux下是通过什么方式读写硬盘的?
  • 在linux中,如何读写usb端口数据
  • 关于学linux的一点疑惑
  • 疑惑:应该使用那种Linux?
  • 新手学习linux 有些疑惑
  • 一个关于linux源代码的疑惑
  • 关于Linux的各种疑惑,请各位赐教,谢谢
  • Linux 动态库,静态库的一些疑惑
  • 关于linux根文件系统的疑惑
  • linux内核安装问题 , 有点疑惑~
  • linux原子操作的疑惑
  • linux和c的一些疑惑!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问 linux 的Swap分区,对系统运行速度、网站访问速度影响大吗?它的作用和工作原理是什么呢?
  • 关于linux驱动中的中断速度问题
  • 如何提高LINUX4网卡的速度?
  • Linux 如何加快 dd 命令备份的速度呢?
  • Linux下看教程的速度
  • (100分)为什么装完Linux后Windows速度这么慢???
  • 寻找linux下载工具,下载速度快,支持断点续传
  • 为什么装上win98、2000、linux后,我运行win2000时的速度非常慢???
  • 到那下载linux的速度比较快
  • 关于LINUX上网速度的问题
  • linux可执行程序运行速度问题
  • linux下程序的启动速度问题
  • http://www.itpub.net 论坛更新数据库,速度更快,欢迎大家前去讨论unix&linux知识!
  • 咋的装了linux在窗口界面下速度很慢呀??
  • linux 下 脚本 与 二进制文件 运行速度比较
  • 求redhat linux9.0 下载的好网站,速度最好快一点的, 谢谢了!
  • SlackWare Linux8.2 速度很快、很稳定!
  • Linux下提高数据库操作速度
  • linux下,ftp傳輸速度很慢,請大家幫忙分析一下原因,來者有分
  • 关于LINUX的 I2C,高手速度进!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 关于LINUX的 I2C,高手速度进! iis7站长之家
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


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

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

    浙ICP备11055608号-3