社区
C语言
帖子详情
请教高手指点, 关于 fopen 与 fclose 的性能比较?
xqmarine
2009-04-22 01:45:04
在同一个函数中, fclose和fopen调用的次数一样多, 但fclose占cpu 60.7% , fopen 的cpu占用时间才 9.7% !
另外个函数中, fopen调用两次 0.02% , fclose调用一次 0.01% (我觉的这个似乎正常)
难道fclose更耗性能吗? 无非一个打开文件操作,一个关闭啊, 请知道的高手指点下
...全文
554
8
打赏
收藏
请教高手指点, 关于 fopen 与 fclose 的性能比较?
在同一个函数中, fclose和fopen调用的次数一样多, 但fclose占cpu 60.7% , fopen 的cpu占用时间才 9.7% ! 另外个函数中, fopen调用两次 0.02% , fclose调用一次 0.01% (我觉的这个似乎正常) 难道fclose更耗性能吗? 无非一个打开文件操作,一个关闭啊, 请知道的高手指点下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cxxer
2009-04-22
打赏
举报
回复
fclose函数会刷缓冲区
lingyin55
2009-04-22
打赏
举报
回复
[Quote=引用 5 楼 xqmarine 的回复:]
数据存储到硬盘不是 fflush吗, fclose函数本身会刷缓冲区吗
[/Quote]
在fclose之前,所有要写入文件的数据都是暂存在缓冲区中的,
这时要写入的文件还是空白,只有执行完fclose之后,才会将缓冲区
的数据写入到文件中。
性能侠客行
2009-04-22
打赏
举报
回复
同一个函数中, fclose和fopen调用的次数一样多, 但fclose占cpu 60.7% , fopen 的cpu占用时间才 9.7% !
另外个函数中, fopen调用两次 0.02% , fclose调用一次 0.01% (我觉的这个似乎正常
fopen 一般是读目录扇区,然后查找是否存在该文件.(以fat为例,一个目录项只有32 bytes ,所以 一般情况下读目录扇区,也是几个扇区).
因此,cpu 耗费小了.
fclose 时候,一般会将剩下数据写到 硬盘介质中,而且,通常会 写fat 表与目录项.
这个时间,肯定比fopen时间长的...
有兴趣可以看看 linux src ..看看fs 相关代码.
xqmarine
2009-04-22
打赏
举报
回复
数据存储到硬盘不是 fflush吗, fclose函数本身会刷缓冲区吗
猫已经找不回了
2009-04-22
打赏
举报
回复
这个主要还是由于文件IO的全缓冲模式,加上fwrite偷懒,导致的.
如果是不带缓冲区的设备,就不会导致fclose这么低效了,像stderr就是不带缓冲的.
猫已经找不回了
2009-04-22
打赏
举报
回复
fclose在关闭文件描述符之前还要冲洗缓冲区呢.
liliangbao
2009-04-22
打赏
举报
回复
可能在fclose的时候才写文件,因为这时最消耗时间~
而打开后都是先暂存在内存中,这样节省时间~
I11
2009-04-22
打赏
举报
回复
没有代码,不好说原因
感觉和打开文件以后对文件的操作有关系,比如写入一些数据,实际上os并没有当时写入磁盘,而是在fclose的时候写入
《C语言深度解析》第9、10章——位操作 /c标准IO、网络编程/线程/链表
本课程主要讲解以下内容:1. 位操作(位运算)2. c语言的标准IO函数3.标准IO与文件IO、常见标准IO函数有哪些、
fopen
/
fclose
)、标准io输出函数、标准io输入函数等4.多线程、网络编程、数据库、数据结构、顺序表、链表、单链表、双链表、队列/栈、Linux内核链表
C++ 如何用创建txt文件,并且写入内容(汇总)
#include int main() { FILE *fp; char fname[32];/*文件名*/ printf("请输入文件名\n"); scanf("%s",fname);/*输入文件名*/ strcat(fname,".txt"); fp=
fopen
(fname,"a");
fclose
(fp); return 0; } 使用
fopen
的w
php base64 转 amr,
请教
PHP sdk 进行音频amr转MP3的问题
目前有项目需要使用七牛云的音频转码的功能,将微信的amr格式转换为MP3格式,自己写了一个测试demo,可是发现音频并没有转换成功,由于之前没有使用过七牛云的相关功能,所以我想问一下我的代码的错误的位置.require_once 'qiniusdk/autoload.php';use Qiniu\Auth;use Qiniu\Storage\UploadManager;use Qiniu\Stor...
江湖救急,
请教
各路大虾这是什么原因导致的错误!
Linking...cc.obj : error LNK2001: unresolved external symbol _displayDebug/cc.exe : fatal error LNK1120: 1 unresolved externals执行 link.exe 时出错.cc.exe - 1 error(s), 0 warning(s)这是我在编写一个人事档案管理
学生信息管理系统C实现
最近看了一些数据结构的书,感觉看书的时候看一段时间就感到厌倦了,个人觉得光看书枯燥无味而且也没多大收获,倒不如丢开书本自己写代码,遇到不会的再看书或
请教
别人,于是决定写一些代码,也算是我学了数据结构的劳动成果吧。代码不多,1000行左右。其中有些代码是照搬别人的,但85%以上的代码还是我个人写的,说实话,写这些代码确实觉得很累,为了完成这段代码,
请教
了不少CSDN的网友,今天我就把代码贴出来,代码我也不想修改了,注释也没写多少,毕竟个人能力有限,再说这些代码也没多大实际意义,希望对于
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章