社区
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更耗性能吗? 无非一个打开文件操作,一个关闭啊, 请知道的高手指点下
...全文
1003
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的时候写入
Linux——用户级缓存区及模拟实现
fopen
、fweite、
fclose
缓冲区位于用户程序和硬件设备之间,用来缓存数据,目的是让快速的 CPU 不必等待慢速的输入输出设备,同时减少操作硬件的次数。对于 IO 密集型的网络应用程序(如网站、数据库、DNS、CDN 等),缓冲区的设计至关重要,它能十倍甚至一百倍得提高程序
性能
。关于缓冲区还有更多的内容,将在 “文件操作” 一章中深入讲解。
四、文件IO、标准IO、
fopen
、
fclose
、fwrite以及fread函数
fwrite()──从buffer开始,一次输出size个字节,重复count次,并将输出的数据存放到fp所指向的文件 中。需要注意的是该函数不是重定位文件指针,而是重定位文件内部的指针,让指向文件内部数据的指针移到文件中我 们感兴趣的数据上,重定位主要是这个目的。把fp指针移动到离文件当前位置100字节处;at+:打开文本文件,可读写,写的数据加在文本末尾 ab+:打开二进制文件,可读写,写的数据加在文件末尾。a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留。
Matlab二进制文件读写实战:从
fopen
到
fclose
的完整避坑指南
本文详细介绍了Matlab中二进制文件读写的完整流程,从
fopen
、fread到
fclose
的实战技巧与常见陷阱。通过解析二进制数据文件的操作细节,帮助用户避免数据类型不匹配、路径错误等常见问题,提升文件处理效率与准确性。特别适合科学计算和工程领域的开发者参考。
深入理解C语言文件操作:从
fopen
到
fclose
的完整流程解析
本文深入解析C语言文件操作中
fopen
和
fclose
函数的底层机制与完整流程。从FILE结构体的内存管理、缓冲区策略(全缓冲、行缓冲、无缓冲)到
fclose
的资源清理职责,结合实战案例剖析高并发与
性能
敏感场景下的核心要点与常见陷阱,帮助开发者编写更健壮、高效的代码。
C语言文件操作实战:从
fopen
到
fclose
的完整流程解析(附常见错误排查)
本文详细解析了C语言文件操作从
fopen
到
fclose
的完整流程,包括FILE指针、缓冲区机制、文件打开模式及常见错误排查。通过实战案例演示了文件读写、随机访问和
性能
优化技巧,帮助开发者掌握高效安全的文件操作方法,特别适合需要处理文件I/O的C语言程序员。
C语言
70,038
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章