void test_write()
{
const int TEST_SIZE = ;
const char* c_plus_write_file = "H://c_plus_write_file.txt";
const char* c_write_file = "g://c_write_file.txt"; cout << "Test size :" << TEST_SIZE << endl;
//c++ style writing file
ofstream of(c_plus_write_file);
//assert(of);
time_t start, end;
start = clock();
for (int i = ; i < TEST_SIZE; ++i)
{
char tmp[];
tmp[] = char(i);
of.write(tmp, );
}
end = clock();
of.close();
cout << "C++ style: " << end - start << " ms" << endl;
//c style writing file
FILE* fp;
fopen_s(&fp, c_write_file, "w");
start = clock();
for (int i = ; i < TEST_SIZE; ++i)
{
char tmp[];
tmp[] = char(i);
fwrite(tmp, , , fp);
}
end = clock();
fclose(fp);
cout << "C style: " << end - start << " ms" << endl;
cin.get();
} //机器配置:
//vs2015,vs2017
//intel(R)Core(TM)i7-6700HQ CPU@2.6GHZ 2.59GHZ
//16.0GB内存 64位操作系统
//测试结果:BUF_SIZE越大,C++与C风格时间差越大,数据如下:
//BUF_SIZE= 1000: c++平均90ms c平均80ms
//BUF_SIZE= 100000000: c++平均70ms c平均30ms
//这是读取测试,对于写入操作二者相关则更显著:BUF_SIZE= 100000000: c++平均25秒 c平均20秒
void test_read()
{
const char* read_file = "g://c_write_file.txt";
const int BUF_SIZE = ;
//char buf[BUF_SIZE];
char* buf = new char[BUF_SIZE];
time_t start, end; //c style writing file
FILE* fp = fopen(read_file, "rb");
assert(fp);
start = clock();
int len = ;
do
{
len = fread(buf, , BUF_SIZE, fp);
//cout<<len<<endl;
} while (len != );
end = clock();
fclose(fp);
cout << "C style: " << end - start << " ms" << endl; //c++ style writing file
ifstream ifs(read_file, ios::binary);
assert(ifs);
start = clock();
while (!ifs.eof())
{
ifs.read(buf, BUF_SIZE);
}
end = clock();
ifs.close();
cout << "C++ style: " << end - start << " ms" << endl; delete[] buf;
cin.get();
}

C++风格与C风格文件读写效率测试-vs2015,vs2017的更多相关文章

  1. C&python文件读写效率

    不同缓冲区读写文件的效率比较 环境:CentOS6.3/ext3/ 读取文件大小:100000000B BUFSIZE TIMECOST 1 real 0m38.909s user 0m5.960s  ...

  2. Linux 目录操作和4中文件拷贝效率测试

    /*1.用户输入任意目录名称,显示该目录下的文件列表信息,包括文件类型,文件权限,文件大小,文件名称2.拷贝用户输入的文件到当前目录下3.第二点功能,使用4种方式完成,并比较说明效率*/ /* str ...

  3. 如何在vscode中用standard style 风格去验证 vue文件

    1 JavaScript Standard Style简介 本工具通过以下三种方式为你(及你的团队)节省大量时间: 无须配置. 史上最便捷的统一代码风格的方式,轻松拥有. 自动代码格式化. 只需运行 ...

  4. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  5. 实现动态的XML文件读写操作(依然带干货)

    前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义好XML文件的格式就不太现实了,如何实现不管 ...

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

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

  7. QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息

    Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...

  8. 大数据学习day25------spark08-----1. 读取数据库的形式创建DataFrame 2. Parquet格式的数据源 3. Orc格式的数据源 4.spark_sql整合hive 5.在IDEA中编写spark程序(用来操作hive) 6. SQL风格和DSL风格以及RDD的形式计算连续登陆三天的用户

    1. 读取数据库的形式创建DataFrame DataFrameFromJDBC object DataFrameFromJDBC { def main(args: Array[String]): U ...

  9. (转)linux文件读写的流程

    转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 在<linux内核虚拟文件系统浅析>这篇文章中,我们看到文件是如何被打开 ...

随机推荐

  1. LeetCode OJ:Linked List Cycle(链表循环)

    Given a linked list, determine if it has a cycle in it. Follow up:Can you solve it without using ext ...

  2. 剑指offer--32.把数组排成最小的数

    用to_string()将整形转化为字符串,对字符串进行比较 --------------------------------------------------------------------- ...

  3. 阿里maven镜像服务器配置

    把下面的配置复制到 .m2/settings.xml配置文件中. <?xml version="1.0" encoding="UTF-8"?> &l ...

  4. Head First HTML与CSS 学习笔记

    1.使用<a>元素创建一个超文本链接,链接到另一个Web页面.<a>元素的内容会成为Web页面中可单击的文本.href属性告诉浏览器链接的目标文件. 2.块元素特立独行,内联元 ...

  5. [Scala]Scala学习笔记三 Map与Tuple

    1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...

  6. android事件传递机制以及onInterceptTouchEvent()和onTouchEvent()总结

    老实说,这两个小东东实在是太麻烦了,很不好懂,我自己那api文档都头晕,在网上找到很多资料,才知道是怎么回事,这里总结一下,记住这个原则就会很清楚了: 1.onInterceptTouchEvent( ...

  7. SHELL 脚本----常用的命令

    一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂   建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行she ...

  8. python学习之函数和函数参数

    #方法的参数定义和默认参数的定义 def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while True: ok = inp ...

  9. HDU - 5088: Revenge of Nim II (问是否存在子集的异或为0)

    Nim is a mathematical game of strategy in which two players take turns removing objects from distinc ...

  10. ASP.NET中服务器控件的生命周期

    服务器控件的生命周期是创建服务器控件最重要的概念.作为开发人员,必须对服务器控件生命周期深刻理解.当然,这不是一朝一夕就可以做到的.对于学习控件开发技术的初学者,可以不必掌握得非常详细深入,只需对服务 ...