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

摘要:
ifs.of())73{74 ifs.read(buf,buf_SIZE);75}76 end=clock();77如果。close();78cout˂˂“C++风格:”˂˂结束-开始˂˂“ms”˂˂endl;7980删除[]buf;81cin。get();82}
 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 }

免责声明:文章转载自《C++风格与C风格文件读写效率测试-vs2015,vs2017》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇三篇文章了解 TiDB 技术内幕——说计算MathType快速编辑公式攻略下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++雾中风景番外篇4:GCC升级二三事

最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2。(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希望后续有同学遇到类似的问题能作为参考。 1. error: unable to find string literal operator 'operator"...

Oracle中TO_DATE TO_CHAR格式

TO_CHAR 是把日期或数字转换为字符串 TO_DATE 是把字符串转换为数据库中得日期类型转换函数 TO_NUMBER 将字符转化为数字TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式...

Android中将EditText里面的内容设置成任意想要的状

okay,我们又见面了。嘿嘿,其实只是一个简单的我们习以为常的密码框,只是,我们忽略的是虽然密码了,但是要做成*状的嘿嘿,可是在这个方法里面哦! 好啦,希望对你们有帮组哦! 如果只是要密码框的话,我们可以setpassword就okay,而且,如果要想editext有输入限制,我们可以设置inputtype。这里我们一般是将其设置为number的形式。 然...

在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间

在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间 ------解决方案----------------------本周 select trunc(sysdate,'d')+1 from dual; select trunc(sysdate,'d')+7 from dual; --本月 select trunc(sysd...

基于wke封装的duilib的webkit浏览器控件,可以c++与js互交,源码及demo下载地址

转载请说明原出处,谢谢~~ 前些日子用wke内核封装了duilib的webkit浏览器控件,好多群里朋友私聊我希望可以我公布源码,今天把这个控件的源码和使用demo公布。其实这个控件封装起来没什么难度,我只是按照原来作者的demo,把相应的消息封装成duilib对应的。 在此首先要感谢wke内核的作者BlzFans以及soui2界面库的作者flyhigh,...

c 结构体中的变长数组

在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构: structpppoe_tag{ __u16tag_type; __u16tag_len; chartag_data[0]; }__attribute((packed)); 最后一个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结...