zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    2019年中国高校计算机大赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    2019年(第12届)中国大学生计算机设计大赛
    2020移动开发竞赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    Android 开发者指南
    Android :HangUp Notification 横幅通知
    HBU E-mobile
    Android Q is Android 10
    Android Studio 3.5(Last updated 7/29/2019)
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/8451479.html
Copyright © 2011-2022 走看看