单线程与多线程读取文件
来源:互联网 发布:淘宝卖办公用品 编辑:程序博客网 时间:2024/06/06 09:28
//实验多个线程读取多个文件和单个线程读取多个文件
//当文件数量是2-3个时,单线程比多线程更快,可能是没有创建线程之类的开销
//文件数量增加到10多个以后,多个线程稍微快一点,但是并没有快多少
//按照网上的说法,读取文件的性能瓶颈是磁盘io的速度,多个线程并不能提高性能
#include <iostream>#include <fstream>#include <thread>#include <string>#include <windows.h>using namespace std;void ReadFileS(const char **path,int len){for (int i = 0; i < len;i++){fstream fs(*(path + i), ios_base::in | ios_base::out);string line;int lineCount = 1;while (fs && getline(fs, line));//cout << "File: " << *(path + i) << "line:" << lineCount++ << ", " << line.c_str() << endl;}}void _tReadFile(const char* path){fstream fs(path, ios_base::in | ios_base::out);string line;int lineCount = 1;while (fs && getline(fs, line));//cout << "File: " << path << "line:" << lineCount++ << ", " << line.c_str() << endl;}void ReadFileM(const char **path, int len){for (int i = 0; i < len; i++){std::thread t(_tReadFile,*(path+i));t.join();}}void main(){const char *path[13] = { "D:\\a.txt", "D:\\b.txt", "D:\\a.txt", "D:\\a.txt", "D:\\a.txt", "D:\\a.txt", "D:\\a.txt", "D:\\a.txt","D:\\a.txt","D:\\a.txt","D:\\a.txt","D:\\a.txt","D:\\a.txt" };double cost;double start = GetTickCount();ReadFileS(path, 13);double end = GetTickCount();cost = difftime(end, start);cout << "time diff 1------------------->" << cost << endl;start = GetTickCount();ReadFileM(path, 13);end = GetTickCount();cost = difftime(end, start);cout << "time diff 2------------------->" << cost << endl;system("pause");}
阅读全文
0 0
- 单线程与多线程读取文件
- 大文件上传-单线程与多线程
- 单线程与多线程
- 单线程与多线程
- 多线程与单线程
- 多线程与单线程区别
- Cpp--单线程与多线程
- 线程-单例与多线程
- 多线程复制文件比单线程慢?
- 多线程与单线程的区别
- 黑马程序员--单线程与多线程
- 黑马程序员—单线程与多线程
- 单线程 与 多线程 的执行
- 单线程与多线程的比较
- 多线程同步与单线程异步对比
- Java多线程与单线程性能对比
- 单线程与多线程的区别
- Android 单线程下载与多线程下载
- Sass预处理语言
- mac终端 常用命令 总结
- angularjs学习总结 详细教程
- Data Binding does not support Jack builds yet
- 【机器学习】Andrew Ng——01概述
- 单线程与多线程读取文件
- 后端数据展示到前端
- HBase 和 Cassandra的浅谈
- python3网络爬虫:爬取煎蛋网美女照片
- AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析
- C++学习笔记【第二部分第十一章:关联容器】
- Elasticsearch系列(十)----使用webmagic爬取数据导入到ES
- 温故知新(7)委托(一)delegate、Action、Func
- Android Api demo系列(19) (Graphics>AnimateDrawables)