C++风格与C风格文件读写效率测试-vs2015,vs2017

 1 void test_write()
 2 {
 3     const int TEST_SIZE = 100000000;
 4     const char* c_plus_write_file = "H://c_plus_write_file.txt";
 5     const char* c_write_file = "g://c_write_file.txt";
 6
 7     cout << "Test size :" << TEST_SIZE << endl;
 8     //c++ style writing file
 9     ofstream of(c_plus_write_file);
10     //assert(of);
11     time_t start, end;
12     start = clock();
13     for (int i = 0; i < TEST_SIZE; ++i)
14     {
15         char tmp[1];
16         tmp[0] = char(i);
17         of.write(tmp, 1);
18     }
19     end = clock();
20     of.close();
21     cout << "C++ style: " << end - start << " ms" << endl;
22     //c style writing file
23     FILE* fp;
24     fopen_s(&fp, c_write_file, "w");
25     start = clock();
26     for (int i = 0; i < TEST_SIZE; ++i)
27     {
28         char tmp[1];
29         tmp[0] = char(i);
30         fwrite(tmp, 1, 1, fp);
31     }
32     end = clock();
33     fclose(fp);
34     cout << "C style: " << end - start << " ms" << endl;
35     cin.get();
36 }
37
38 //机器配置:
39 //vs2015,vs2017
40 //intel(R)Core(TM)i7-6700HQ CPU@2.6GHZ 2.59GHZ
41 //16.0GB内存 64位操作系统
42 //测试结果:BUF_SIZE越大,C++与C风格时间差越大,数据如下:
43 //BUF_SIZE= 1000: c++平均90ms c平均80ms
44 //BUF_SIZE= 100000000: c++平均70ms c平均30ms
45 //这是读取测试,对于写入操作二者相关则更显著:BUF_SIZE= 100000000: c++平均25秒 c平均20秒
46 void test_read()
47 {
48     const char* read_file = "g://c_write_file.txt";
49     const int BUF_SIZE = 100000000;
50     //char buf[BUF_SIZE];
51     char* buf = new char[BUF_SIZE];
52     time_t start, end;
53
54     //c style writing file
55     FILE* fp = fopen(read_file, "rb");
56     assert(fp);
57     start = clock();
58     int len = 0;
59     do
60     {
61         len = fread(buf, 1, BUF_SIZE, fp);
62         //cout<<len<<endl;
63     } while (len != 0);
64     end = clock();
65     fclose(fp);
66     cout << "C style: " << end - start << " ms" << endl;
67
68     //c++ style writing file
69     ifstream ifs(read_file, ios::binary);
70     assert(ifs);
71     start = clock();
72     while (!ifs.eof())
73     {
74         ifs.read(buf, BUF_SIZE);
75     }
76     end = clock();
77     ifs.close();
78     cout << "C++ style: " << end - start << " ms" << endl;
79
80     delete[] buf;
81     cin.get();
82 }

posted on 2018-02-17 10:59 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

C++风格与C风格文件读写效率测试-vs2015,vs2017相关推荐

  1. Jedis 读写效率测试 hgetAll hmset

    测试结果: 1.redis使用三种方式 1)单 Jedis 读写1条命令,读写玩即close() 2) 单Jedis读写多条命令,此种情况尝试不释放Jedis连接,由于Jedis本质是tcp长连接,需 ...

  2. 读取parquet_parquet文件读写本地测试

    根据这里的代码,修改了bug,完善了parquet嵌套型数据的读写,以及hdfs的本地模拟. package com.test.parquet; import org.apache.hadoop.co ...

  3. Ext2文件系统—文件读写

    1.定义 只有在"打开"了文件以后,或者说建立了进程与文件的"连接"之后,才能对文件进行读写.为了提高效率,Linux的读写操作都是带缓冲的,即写的时候先写到缓 ...

  4. 【Python 基础教程 20】全面掌握Python3输入输出:从入门到高级的实用指南(文件读写,Excel读写,Markdowm文件读写)

    目录标题 1. 简介 1.1 Python3 输入输出的定义 1.2 输入输出的重要性和常见应用场景 2. 标准输入输出 2.1 介绍标准输入(stdin) 2.2 介绍标准输出(stdout) 2. ...

  5. Java之文件流操作的文件读写

    Java之文件流操作的文件读写 本人非常喜欢Java的代码风格,今天记录一下文件字符串的读写,但是Java对于 制作exe文件非常不友好,而本人业务的要求,基本上都是制作exe文件,或者程序,Java ...

  6. c语言把字符串写入文件,c语言文件读写 | 按字符,按行,按块

    按字符对文件读写 fopen(char *,r+):打开文件 fputc("c",FILE *fp):把字符写到fp文件中 tempc = fgetc(FILE *fp):从fp中 ...

  7. CFile和CStdioFile的文件读写使用方法

    CFile //创建/打开文件 CFile file; file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTrunca ...

  8. 使用FileSystem类进行文件读写及查看文件信息

    使用FileSystem类进行文件读写及查看文件信息 在这一节我们要深入了解Hadoop的FileSystem类--这是与与hadoop的文件系统交互的重要接口.虽然我们只是着重于HDFS的实现,但我 ...

  9. VC文件读写操作总结

    From:http://www.xiaozhou.net/ReadNews.asp?NewsID=248 各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到 ...

最新文章

  1. 两个向量组的秩相等说明什么_解析几何初步:向量与坐标(一)
  2. java length()函数_小猿圈介绍java函数式编码结构及优势
  3. CNN中的卷积操作的参数数计算
  4. 如何使用异步Servlet来提高性能
  5. mysql 单标递归_MySql8 WITH RECURSIVE递归查询父子集的方法
  6. typeof 数据类型转换
  7. 前端开发面试题集锦(一)
  8. 【Day01】你有封装过 axios 吗?主要是封装哪些方面?如何中断 axios 请求?
  9. matlab图像分类器,Matlab 基于svm的图像物体分类
  10. android rsa解密前面带乱码,C#rsa解密的解出来的结果乱码
  11. 全日制计算机大专学校有哪些科目,全日制大专报名_实时汇总
  12. Windows 10 预览版安装
  13. 如何查看excel中的vba代码
  14. SQL Server 2012 安装图解教程(附sql2012下载地址)
  15. MySQL批量插入(使用mybatis实现mysql数据库的批量插入操作)
  16. 信息系统项目管理师计算题(进度管理总浮动时间、自由浮动时间、工期)
  17. vscode如何设置大小写转换的快捷键
  18. freyja将重新把重心放在orm、sharding、cache上
  19. WORD无法复制文件:无法读源文件或磁盘
  20. 树莓派 android10,树莓派4使用AndroidTV 10系统

热门文章

  1. Zabbix数据库需要多大硬盘
  2. 信息系统项目管理师-论文专题(三)范围管理论文写作
  3. 阿里巴巴矢量图标库iconfont的使用
  4. Nginx+keepalived从入门到集群搭建(手把手教学,建议收藏)
  5. 在青岛呆了两年之后,我明白了何为工资低消费高。。。
  6. IT项目管理总结:第二章 项目管理和IT背景
  7. 机关单位公文编写注意事项
  8. java 枚举常量_java中的枚举类和常量类区别在哪儿?
  9. 官宣:神策 2018 数据驱动大会亮点回顾
  10. 用户研究,你还在“凭感觉”吗?