write、fwrite、fstream二进制I/O的效率对比

测试数据

写文件测试数据

注:每项数据为3次运行的结果取平局值,运行时长为10ms。

|------------|--------|--------|---------------|
| 单次传入字节数(B) | 写入字节数(MB) |||
| 单次传入字节数(B) | write | fwrite | fstream.write |
| 1 | 0.005 | 0.124 | 0.127 |
| 4 | 0.019 | 0.453 | 0.450 |
| 16 | 0.064 | 1.840 | 1.860 |
| 64 | 0.363 | 4.503 | 4.277 |
| 256 | 0.900 | 7.753 | 9.490 |
| 512 | 1.880 | 8.797 | 10.220 |
| 1024 | 3.707 | 9.003 | 4.060 |
| 2048 | 5.733 | 8.930 | 5.157 |
| 4096 | 9.177 | 10.140 | 10.993 |
| 8192 | 10.023 | 10.853 | 13.727 |
| 16384 | 12.387 | 10.510 | 11.377 |
| 32768 | 13.280 | 12.967 | 13.333 |
| 65536 | 11.000 | 9.877 | 11.333 |

读文件测试数据

待补充......

结果分析

  1. 单次传入字节数小于1K时,write的效率与fwrite、fstream.write差距很大,在单次传入字节数大于等于4K后效率接近。
  2. 标准I/O库的fwrite接口和C++标准库的fstream.write接口写二进制文本的效率基本接近,但在单次传入字节数1K和2K时fwrite效率高于fstream.write。
相关推荐
文祐5 小时前
C++类之虚函数表没有虚继承的菱形继承
开发语言·c++·算法
孬甭_7 小时前
C++ string类
开发语言·c++
盐焗鹌鹑蛋8 小时前
【C++】C++11:右值引用、移动语义万能引用
c++
LingzhiPi8 小时前
零知ESP32--RC522NFC考勤打卡系统
c++·单片机·嵌入式硬件
小灰灰搞电子9 小时前
C++ boost::range 详解:基于最新版本的现代范围处理指南
开发语言·c++
王燕龙(大卫)9 小时前
fastdds笔记
网络·c++·笔记
脱胎换骨-军哥9 小时前
C++ 与 Go 生成质量比拼,谁是分布式主力语言
c++·分布式·golang
快乐星空Maker9 小时前
C++【生存游戏】开发:荒岛往事 第三期
开发语言·c++·游戏·编程语言
郝学胜-神的一滴9 小时前
Qt 高级编程 035:无边框窗口阴影以及圆角双特效实现
开发语言·c++·qt·程序人生·用户界面
AA陈超9 小时前
006 T03 — 蓝图操作指南
c++·游戏·架构·ue5·github·虚幻引擎