当前位置: 首页 > news >正文

网站正在建设页面南京手机网站设计专业

网站正在建设页面,南京手机网站设计专业,wordpress 作品展示,北京市工程建设目录 4.1手动实现多核base16编码4.1.1 实现base16编码4.1.2无多线程代码4.1.3 C 11多线程代码4.1.4 C 17多线程并发4.1.5 所有测试代码汇总 4.1手动实现多核base16编码 4.1.1 实现base16编码 二进制转换为字符串 一个字节8位#xff0c;拆分为两个4位字节#xff08;最大值… 目录 4.1手动实现多核base16编码4.1.1 实现base16编码4.1.2无多线程代码4.1.3 C 11多线程代码4.1.4 C 17多线程并发4.1.5 所有测试代码汇总 4.1手动实现多核base16编码 4.1.1 实现base16编码 二进制转换为字符串 一个字节8位拆分为两个4位字节最大值16 拆分后的字节映射到0123456789abcdef 4.1.2无多线程代码 #include thread #includeiostream #includefuture #include string #include vector #include chrono//计时头C11using namespace std; using namespace chrono;static const char base16[] 0123456789abcdef; void Base16Encode(const unsigned char* data, int size, unsigned char* out) {for (int i 0; i size; i){unsigned char d data[i];//0000 0000//1234 5678 4 0000 1234 移位操作//1234 5678 0000 1111 0000 5678char a base16[d 4];//取出高位char b base16[d 0x0F];//取出低位out[i * 2] a;out[i * 21] b;} }int main() {//使用字符串进行16位编码测试string test_data 测试base16编码;printf(test_data size%d\n, test_data.size());//一个中文占用2个字节一个英文占用1个字节如果要解码出来包含中文和英文有点难度unsigned char* out new unsigned char[test_data.size()*21];Base16Encode((unsigned char*)test_data.data(), test_data.size(), out);//编码out[test_data.size()*2] \0;//字符串\0结尾否则后面总有乱码cout base16: out endl;//测试单线程base16编码效率{vectorunsigned charin_data;in_data.resize(1024 * 1024 * 20);// 1024*1024*10 - 10M 测试数据for (int i 0; i in_data.size(); i){//初始化里面数据in_data[i] i % 256;}vectorunsigned charout_data;out_data.resize(in_data.size()*2);//是输入数据2倍auto start system_clock::now();//计时开始Base16Encode(in_data.data(), in_data.size(),out_data.data());auto end system_clock::now();//计时结束auto duration duration_castmilliseconds(end-start);//模板函数转换到毫秒cout 编码 in_data.size() 字节数据花费 duration.count() 毫秒 endl;//cout out_data.data() endl;}printf(All done!\n);getchar();return 0; }4.1.3 C 11多线程代码 //C11多线程 void Base16EncodeThread(const vectorunsigned chardata, vectorunsigned char out) {long size data.size();int th_count thread::hardware_concurrency();//系统支持的线程核心数printf(CPU report thread count:%d\n,th_count);//对原始数据进行切片long slice_count size / th_count;//余数丢弃了余数后续单独处理if (size th_count){//只切一片th_count 1;//1个线程搞定slice_count size;}vectorthread ths;//准备好线程ths.resize(th_count);//任务分配到各个线程 for (int i 0; i th_count; i){//eg. 1234 5678 9abc defg hi//计算偏移位置long offset i * slice_count;long count slice_count;//最后一个线程要把余数加起来一起处理if (th_count 1 i th_count - 1){count slice_count size%th_count;}//cout offset : count endl;ths[i] thread(Base16Encode, data.data() offset,count, out.data());}//等待所有线程处理结束for (auto th : ths){th.join();} } 4.1.4 C 17多线程并发 printf(C17多线程Base16编码效率测试(编译的时候先检查设置C17) 开始计算\n);//设置C17方法属性-C/C -C语言标准 设置ISOC17vectorunsigned charin_data;in_data.resize(TestNumber);// 1024*1024*10 - 10M 测试数据for (int i 0; i in_data.size(); i){//初始化里面数据in_data[i] i % 256;}vectorunsigned charout_data;out_data.resize(in_data.size() * 2);//是输入数据2倍auto start system_clock::now();//计时开始//#include execution //C17 支持std::for_each(std::execution::par,//并行计算 多核in_data.begin(),in_data.end(),[](auto d)//多线程进入此函数{char a base16[(d 4)];char b base16[(d 0x0F)];int index d - in_data.data();out_data[index * 2] a;out_data[index * 2 1] b;});auto end system_clock::now();//计时结束auto duration duration_castmilliseconds(end - start);//模板函数转换到毫秒cout C17多线程 编码 in_data.size() 字节数据花费 duration.count() 毫秒 endl;4.1.5 所有测试代码汇总 #include thread #includeiostream #includefuture #include string #include vector #include chrono//计时头C11#include execution //C17 for_eachusing namespace std; using namespace chrono;static const char base16[] 0123456789abcdef; void Base16Encode(const unsigned char* data, long size, unsigned char* out) {for (int i 0; i size; i){unsigned char d data[i];//0000 0000//1234 5678 4 0000 1234 移位操作//1234 5678 0000 1111 0000 5678char a base16[d 4];//取出高位char b base16[d 0x0F];//取出低位out[i * 2] a;out[i * 21] b;} }//C11多线程 void Base16EncodeThread(const vectorunsigned chardata, vectorunsigned char out) {long size data.size();int th_count thread::hardware_concurrency();//系统支持的线程核心数printf(CPU report thread count:%d\n,th_count);//对原始数据进行切片long slice_count size / th_count;//余数丢弃了余数后续单独处理if (size th_count){//只切一片th_count 1;//1个线程搞定slice_count size;}vectorthread ths;//准备好线程ths.resize(th_count);//任务分配到各个线程 for (int i 0; i th_count; i){//eg. 1234 5678 9abc defg hi//计算偏移位置long offset i * slice_count;long count slice_count;//最后一个线程要把余数加起来一起处理if (th_count 1 i th_count - 1){count slice_count size%th_count;}//cout offset : count endl;ths[i] thread(Base16Encode, data.data() offset,count, out.data());}//等待所有线程处理结束for (auto th : ths){th.join();} }int main() {int TestNumber 1024 * 1024 * 20 - 1; //1024 * 1024 * 10 - 10M 测试数据大小//使用字符串进行16位编码测试string test_data 测试base16编码;printf(test_data size%d\n, test_data.size());//一个中文占用2个字节一个英文占用1个字节如果要解码出来包含中文和英文有点难度unsigned char* out new unsigned char[test_data.size()*21];Base16Encode((unsigned char*)test_data.data(), test_data.size(), out);//编码out[test_data.size()*2] \0;cout base16: out endl;//测试单线程base16编码效率{printf(单线程Base16编码效率测试 开始计算\n);vectorunsigned charin_data;in_data.resize(TestNumber);// 1024*1024*10 - 10M 测试数据for (int i 0; i in_data.size(); i){//初始化里面数据in_data[i] i % 256;}vectorunsigned charout_data;out_data.resize(in_data.size()*2);//是输入数据2倍auto start system_clock::now();//计时开始Base16Encode(in_data.data(), in_data.size(),out_data.data());auto end system_clock::now();//计时结束auto duration duration_castmilliseconds(end-start);//模板函数转换到毫秒cout 编码 in_data.size() 字节数据花费 duration.count() 毫秒 endl;//cout out_data.data() endl;//预览编码后的文本}//测试C11多线程base16编码效率{printf(C11多线程Base16编码效率测试 开始计算\n);vectorunsigned charin_data;in_data.resize(TestNumber);// 1024*1024*10 - 10M 测试数据for (int i 0; i in_data.size(); i){//初始化里面数据in_data[i] i % 256;}vectorunsigned charout_data;out_data.resize(in_data.size() * 2);//是输入数据2倍auto start system_clock::now();//计时开始Base16EncodeThread(in_data, out_data);//多线程auto end system_clock::now();//计时结束auto duration duration_castmilliseconds(end - start);//模板函数转换到毫秒cout C11多线程 编码 in_data.size() 字节数据花费 duration.count() 毫秒 endl;//cout out_data.data() endl;//预览编码后的文本}//测试C11多线程base16编码效率{printf(C17多线程Base16编码效率测试(编译的时候先检查设置C17) 开始计算\n);//设置C17方法属性-C/C -C语言标准 设置ISOC17vectorunsigned charin_data;in_data.resize(TestNumber);// 1024*1024*10 - 10M 测试数据for (int i 0; i in_data.size(); i){//初始化里面数据in_data[i] i % 256;}vectorunsigned charout_data;out_data.resize(in_data.size() * 2);//是输入数据2倍auto start system_clock::now();//计时开始//#include execution //C17 支持std::for_each(std::execution::par,//并行计算 多核in_data.begin(),in_data.end(),[](auto d)//多线程进入此函数{char a base16[(d 4)];char b base16[(d 0x0F)];int index d - in_data.data();out_data[index * 2] a;out_data[index * 2 1] b;});auto end system_clock::now();//计时结束auto duration duration_castmilliseconds(end - start);//模板函数转换到毫秒cout C17多线程 编码 in_data.size() 字节数据花费 duration.count() 毫秒 endl;//cout out_data.data() endl;//预览编码后的文本}printf(All done!\n);getchar();return 0; }分析 release版本优化的比较多之所以C17耗时较长原因是进入多线程次数远远大于C11,C11只进入了12次而C17采用lambda表达式函数进入了TestNumber次
http://www.hkea.cn/news/14423885/

相关文章:

  • 网站建设相关资料文件如何查看网站是否降权
  • 建设网站的叫什么职位哪里去找做的好看的网站
  • 建设网站的申请信用卡分期付款网站建设手机端是什么意思
  • 南通网站定制西部数码网站备案查询
  • 重庆建设集团官方网站湖南长沙房价2022最新价格
  • 永州做网站免费送的广告怎么在网站上做
  • 网页游戏新游戏谷歌seo最好的公司
  • 有数据库的网站网站添加白名单
  • 镇江网站建设建设城市2的游戏在哪个网站
  • 贵州 做企业网站的流程wordpress 响应式 框架
  • 知名做网站费用海南建设培训网站
  • 电商网站网址个人网站如何被百度收录
  • 建设银行网站在哪里修改支付密码360永久免费建网站
  • 网站的功能和特色wordpress七牛w3tc加速
  • 创建网站的ip地址怎么获得长沙seo优化多少钱
  • 深圳外贸网站怎么建免费软件有哪些
  • 网站建设项目管理绩效情况分析旅游网站开发毕业设计论文
  • ps做的网站做影视网站推荐哪个服务器
  • wordpress著名网站浏览器网站设置在哪里
  • 深圳app网站建设国外vps
  • 广东深圳龙岗区邮政编码外贸seo关键词
  • 网站的基本要素网站制作教程步骤
  • 可以免费观看电影的网站logo网站有哪些
  • 哪个网络公司做网站好点做个小程序需要花多少钱
  • 网站建设整改实施方案wordpress 图片 视频
  • 小网站关键词上海的设计网站有哪些
  • 网站盗号怎么做可编辑wordpress主题
  • 运营一个网站一年费用网页工具在哪里
  • 1g内存的服务器可以建设几个网站百度推广登录平台app
  • cms如何做中英网站德州建设公司网站