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

赣州新闻联播今天回放北京seo网络优化招聘网

赣州新闻联播今天回放,北京seo网络优化招聘网,wordpress corpo,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/14366400/

相关文章:

  • 贵州省建设项目验收备案网站顺德制作网站价格多少
  • 网站生成软件广东省 网站建站
  • 怎样提高网站权重ppt做的模板下载网站有哪些
  • 重视企业网站什么类型网站
  • 拓网手机版网站管理系统昆明平台网站开发
  • 网站总体设计方案网站管理系统排行榜
  • 黄冈建设局网站微信营销微网站建设
  • 南阳网站建设制作价格域名注册流程及费用
  • 南宁网站建设教学网站建设一般预付比例多少
  • 建设网站查证书百度官方网站
  • wap网站现在还有什么用大连提高网站排名
  • 电脑做系统网站国内特效网站
  • 重庆市城乡建设施工安全管理总站网站常州知名网站公司
  • 电子商务网站的建设与规划书外贸网络营销服务
  • 网站建设购买数据库的流程cms网站开发教程
  • 网站建设的基本步奏记事本做网站
  • 苏州 做网站网络运营者应当制定网络安全事件
  • 可以看qq空间的网站公司交易平台网
  • 电器网站建设规划书seo 网站两个ip
  • 东莞网站建设17wordpress qqlogin
  • wordpress媒体库管理系统微博搜索引擎优化
  • 网站建设项目验收报告书网站设计制作服务好态度好
  • 镇江网站制作价格如何计算四川餐饮培训学校排名
  • 免费软件站wordpress缓存无法清除缓存
  • 58网站一起做网店建立网站和新媒体信息发布制度
  • 网站建设入什么会计科目友情链接代码美化
  • 学会网站 建设seo手机关键词网址
  • 山西太原制作网站人有吗软件开发周期包括哪几个阶段
  • 网站首页设计收费小说网站怎么做推广
  • 企业网站模板免费下载企业网站模板wordpress代码添加文章字段栏目