【测速】矩阵翻转
编程技术  /  houtizong 发布于 3年前   191
//水平翻转矩阵中的元素void flipHorizontally(){T tmp;//int halfHeight=height_row/2;int halfWidth=width_col/2;for (int r=0; r<height_row; r++) {for (int c=0; c<halfWidth; c++) {int c2=width_col-1-c;tmp=getValue(r,c);this->operator()(r,c)=this->operator()(r,c2);this->operator()(r,c2)=tmp;}}}//水平翻转矩阵中的元素Matrix flipHorizontallyNewMatrix(){Matrix flipped(height_row,width_col);int halfWidth=width_col/2;for (int r=0; r<height_row; r++) {for (int c=0; c<=halfWidth; c++) {int c2=width_col-1-c;flipped(r,c)=this->operator()(r,c2);flipped(r,c2)=this->operator()(r,c);}}return flipped;}//水平翻转矩阵中的元素Matrix flipHorizontallyNewMatrix2(){Matrix flipped(height_row,width_col);for (int r=0; r<height_row; r++) {for (int c=0; c<width_col; c++) {int c2=width_col-1-c;flipped(r,c)=this->operator()(r,c2);}}return flipped;}//垂直翻转矩阵中的元素Matrix flipVerticallyNewMatrix(){Matrix flipped(height_row,width_col);int halfHeight=height_row/2;for (int r=0; r<=halfHeight; r++) {for (int c=0; c<width_col; c++) {int r2=height_row-1-r;flipped(r,c)=this->operator()(r2,c);flipped(r2,c)=this->operator()(r,c);}}return flipped;}//垂直翻转矩阵中的元素Matrix flipVerticallyNewMatrix2(){Matrix flipped(height_row,width_col);for (int r=0; r<height_row; r++) {for (int c=0; c<width_col; c++) {int r2=height_row-1-r;flipped(r,c)=this->operator()(r2,c);//flipped(r2,c)=this->operator()(r,c);}}return flipped;}//垂直翻转矩阵中的元素void flipVertically(){T tmp;int halfHeight=height_row/2;for (int r=0; r<halfHeight; r++) {for (int c=0; c<width_col; c++) {int r2=height_row-1-r;tmp=getValue(r,c);this->operator()(r,c)=this->operator()(r2,c);this->operator()(r2,c)=tmp;}}}
for (int n=10; n<1000; n+=33) { MatrixInt m(n,n); for (int i=0; i<m.getNumEl(); i++) { m(i)=i; } int testNum=10000/n*10000/n; Timer timer; for(int i=0; i<testNum; i++) m.flipVerticallyNewMatrix(); long tv1=timer.getElapsedTimeAndRestart(); for(int i=0; i<testNum; i++) m.flipVerticallyNewMatrix2(); long tv2=timer.getElapsedTimeAndRestart();for(int i=0; i<testNum; i++)m.flipVertically();long tvInplace=timer.getElapsedTimeAndRestart(); for(int i=0; i<testNum; i++) m.flipHorizontallyNewMatrix(); long th1=timer.getElapsedTimeAndRestart(); for(int i=0; i<testNum; i++) m.flipHorizontallyNewMatrix2(); long th2=timer.getElapsedTimeAndRestart();for(int i=0; i<testNum; i++)m.flipHorizontally();long thInplace=timer.getElapsedTimeAndRestart();cout<<"矩阵大小: "<<m.height_row<<"行*"<<m.width_col<<"列"<<endl;cout<<"水平翻转耗时:方法1: "<<th1<<";\t\t方法2: "<<th2<<";\t\t原位翻转: "<<thInplace<<endl;cout<<"垂直翻转耗时:方法1: "<<tv1<<";\t\t方法2: "<<tv2<<";\t\t原位翻转: "<<tvInplace<<endl; cout<<endl; }
矩阵大小: 10行*10列水平翻转耗时:方法1: 566;方法2: 340;原位翻转: 410垂直翻转耗时:方法1: 652;方法2: 342;原位翻转: 450矩阵大小: 43行*43列水平翻转耗时:方法1: 364;方法2: 180;原位翻转: 390垂直翻转耗时:方法1: 425;方法2: 178;原位翻转: 434矩阵大小: 76行*76列水平翻转耗时:方法1: 361;方法2: 188;原位翻转: 402垂直翻转耗时:方法1: 433;方法2: 183;原位翻转: 445矩阵大小: 109行*109列水平翻转耗时:方法1: 360;方法2: 180;原位翻转: 397垂直翻转耗时:方法1: 411;方法2: 174;原位翻转: 440矩阵大小: 142行*142列水平翻转耗时:方法1: 357;方法2: 176;原位翻转: 406垂直翻转耗时:方法1: 413;方法2: 173;原位翻转: 456矩阵大小: 175行*175列水平翻转耗时:方法1: 353;方法2: 173;原位翻转: 403垂直翻转耗时:方法1: 412;方法2: 171;原位翻转: 452矩阵大小: 208行*208列水平翻转耗时:方法1: 359;方法2: 176;原位翻转: 408垂直翻转耗时:方法1: 417;方法2: 173;原位翻转: 455矩阵大小: 241行*241列水平翻转耗时:方法1: 349;方法2: 171;原位翻转: 400垂直翻转耗时:方法1: 411;方法2: 170;原位翻转: 449矩阵大小: 274行*274列水平翻转耗时:方法1: 346;方法2: 173;原位翻转: 400垂直翻转耗时:方法1: 406;方法2: 167;原位翻转: 448矩阵大小: 307行*307列水平翻转耗时:方法1: 343;方法2: 170;原位翻转: 400垂直翻转耗时:方法1: 402;方法2: 168;原位翻转: 443矩阵大小: 340行*340列水平翻转耗时:方法1: 360;方法2: 174;原位翻转: 420垂直翻转耗时:方法1: 410;方法2: 169;原位翻转: 447矩阵大小: 373行*373列水平翻转耗时:方法1: 460;方法2: 259;原位翻转: 398垂直翻转耗时:方法1: 512;方法2: 261;原位翻转: 443矩阵大小: 406行*406列水平翻转耗时:方法1: 456;方法2: 262;原位翻转: 403垂直翻转耗时:方法1: 516;方法2: 255;原位翻转: 452矩阵大小: 439行*439列水平翻转耗时:方法1: 450;方法2: 248;原位翻转: 401垂直翻转耗时:方法1: 500;方法2: 249;原位翻转: 445矩阵大小: 472行*472列水平翻转耗时:方法1: 453;方法2: 269;原位翻转: 402垂直翻转耗时:方法1: 513;方法2: 265;原位翻转: 450矩阵大小: 505行*505列水平翻转耗时:方法1: 433;方法2: 252;原位翻转: 390垂直翻转耗时:方法1: 489;方法2: 249;原位翻转: 436矩阵大小: 538行*538列水平翻转耗时:方法1: 440;方法2: 247;原位翻转: 398垂直翻转耗时:方法1: 497;方法2: 247;原位翻转: 444矩阵大小: 571行*571列水平翻转耗时:方法1: 443;方法2: 256;原位翻转: 397垂直翻转耗时:方法1: 496;方法2: 248;原位翻转: 440矩阵大小: 604行*604列水平翻转耗时:方法1: 439;方法2: 252;原位翻转: 402垂直翻转耗时:方法1: 494;方法2: 248;原位翻转: 438矩阵大小: 637行*637列水平翻转耗时:方法1: 436;方法2: 244;原位翻转: 397垂直翻转耗时:方法1: 488;方法2: 242;原位翻转: 432矩阵大小: 670行*670列水平翻转耗时:方法1: 427;方法2: 243;原位翻转: 384垂直翻转耗时:方法1: 483;方法2: 238;原位翻转: 427矩阵大小: 703行*703列水平翻转耗时:方法1: 449;方法2: 257;原位翻转: 403垂直翻转耗时:方法1: 527;方法2: 260;原位翻转: 459矩阵大小: 736行*736列水平翻转耗时:方法1: 432;方法2: 246;原位翻转: 395垂直翻转耗时:方法1: 493;方法2: 245;原位翻转: 440矩阵大小: 769行*769列水平翻转耗时:方法1: 452;方法2: 258;原位翻转: 409垂直翻转耗时:方法1: 518;方法2: 256;原位翻转: 458矩阵大小: 802行*802列水平翻转耗时:方法1: 434;方法2: 248;原位翻转: 392垂直翻转耗时:方法1: 492;方法2: 248;原位翻转: 433矩阵大小: 835行*835列水平翻转耗时:方法1: 415;方法2: 240;原位翻转: 372垂直翻转耗时:方法1: 466;方法2: 234;原位翻转: 416矩阵大小: 868行*868列水平翻转耗时:方法1: 427;方法2: 247;原位翻转: 388垂直翻转耗时:方法1: 478;方法2: 239;原位翻转: 433矩阵大小: 901行*901列水平翻转耗时:方法1: 448;方法2: 262;原位翻转: 400垂直翻转耗时:方法1: 499;方法2: 251;原位翻转: 449矩阵大小: 934行*934列水平翻转耗时:方法1: 422;方法2: 248;原位翻转: 380垂直翻转耗时:方法1: 477;方法2: 237;原位翻转: 426矩阵大小: 967行*967列水平翻转耗时:方法1: 436;方法2: 257;原位翻转: 388垂直翻转耗时:方法1: 493;方法2: 248;原位翻转: 438
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接