⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 benchmark.cpp

📁 linux操作系统下的sift算法
💻 CPP
字号:
#include"sift.hpp"#include<iostream>#include<iomanip>#include<sys/time.h>#define FLOOR(x)   std::floor(x)#define FMOD(x,y)  std::fmod(x,y)#define SQRT(x)    std::sqrt(x)#define ATAN2(y,x) std::atan2(y,x)#define EXPN(x)    std::exp(-(x))using namespace std ;using namespace VL ;long intsubtime(struct timeval const& a, struct timeval const& b){  return (a.tv_sec - b.tv_sec) * 1000000 + a.tv_usec - b.tv_usec ;}intmain(int argc, char** argv){  timeval time_start ;  timeval time_stop ;    // -----------------------------------------------------------------  //                                                             speed  // -----------------------------------------------------------------  // compare fast_floor with floor  gettimeofday(&time_start,0) ;  for(VL::float_t x = - 100 ; x < 100 ; x += 1e-5) {    VL::int32_t y = fast_floor( x ) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fast_floor : "<<subtime(time_stop,time_start)<<endl ;  gettimeofday(&time_start,0) ;  for(VL::float_t x = - 100 ; x < 100 ; x += 1e-5) {    VL::int32_t y = VL::int32_t( FLOOR ( x )) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"(int) floorf : "<<subtime(time_stop,time_start)<<endl ;  // compare fast_mod_2pi  gettimeofday(&time_start,0) ;  for(VL::float_t x = - 4*M_PI; x < 2*M_PI ; x += 1e-5) {    VL::float_t y = fast_mod_2pi(x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fast_mod_2pi : "<<subtime(time_stop,time_start)<<endl ;  gettimeofday(&time_start,0) ;  for(VL::float_t x = - 4*M_PI; x < 2*M_PI ; x += 1e-5) {    VL::float_t y = FMOD ( x, VL::float_t(2*M_PI) ) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fmod : "<<subtime(time_stop,time_start)<<endl ;    // compare sqrt  gettimeofday(&time_start,0) ;  for(VL::float_t x = 0 ; x < 100 ; x += 1e-5) {    VL::float_t y = fast_sqrt(x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fast_sqrt : "<<subtime(time_stop,time_start)<<endl ;  gettimeofday(&time_start,0) ;  for(VL::float_t x = 0 ; x < 100 ; x += 1e-5) {    VL::float_t y = SQRT ( x ) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"sqrt : "<<subtime(time_stop,time_start)<<endl ;  // compare atan2  gettimeofday(&time_start,0) ;  for(VL::float_t x = -100 ; x < 100 ; x += 1e-5) {    VL::float_t y = fast_atan2(VL::float_t(1.0),x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fast_atan2 : "<<subtime(time_stop,time_start)<<endl ;  gettimeofday(&time_start,0) ;  for(VL::float_t x = -100 ; x < 100 ; x += 1e-5) {    VL::float_t y = ATAN2(VL::float_t(1.0),x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"atan2 : "<<subtime(time_stop,time_start)<<endl ;  // compare epnx  gettimeofday(&time_start,0) ;  for(VL::float_t x = 0 ; x < 25.0 ; x += 1e-4) {    VL::float_t y = fast_expn(x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"fast_epxn : "<<subtime(time_stop,time_start)<<endl ;  gettimeofday(&time_start,0) ;  for(VL::float_t x = 0 ; x < 25.0 ; x += 1e-4) {    VL::float_t y = EXPN (x) ;  }  gettimeofday(&time_stop,0) ;    cout<<setw(20)<<"epx(-x) : "<<subtime(time_stop,time_start)<<endl ;  // -----------------------------------------------------------------  //                                                          accuracy  // -----------------------------------------------------------------  cout<<"fast_sqrt accuracy:" ;  for(VL::float_t x = 0 ; x < 100 ; x += 5) {    VL::float_t e = fast_abs( fast_sqrt(x) -  SQRT ( x ) ) ;    cout<< " " << e / (x+1e-8) ;  }  cout<<endl ;    cout<<"fast_atan2 accuracy:" ;  for(VL::float_t x = -100 ; x < 100 ; x += 5) {    VL::float_t e = fast_atan2(VL::float_t(1.0),x) - ATAN2 (VL::float_t(1.0),x) ;    cout<< " " << e ;  }  cout<<endl ;  cout<<"fast_atan2 accuracy:" ;  for(VL::float_t x = -100 ; x < 100 ; x += 5) {    VL::float_t e = fast_atan2(VL::float_t(-1.0),x) - ATAN2 (VL::float_t(-1.0),x) ;    cout<< " " << e ;  }  cout<<endl ;  cout<<"fast_expn accuracy:" ;  for(VL::float_t x = 0 ; x < 25.0 ; x += 0.5) {    VL::float_t e = fast_expn(x) - EXPN(x) ;    cout<< " " << e ;  }  cout<<endl ;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -