前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何提高C++中for循环的效率

如何提高C++中for循环的效率

作者头像
用户9831583
发布2022-06-16 14:26:31
1.9K0
发布2022-06-16 14:26:31
举报
文章被收录于专栏:码出名企路

1. 不假思索的写法(最为常见,且最耗时)

测试用时:0.000143s

代码语言:javascript
复制
    clock_t startTime,endTime;
    startTime = clock();
     vector<double> row(100);
     double sum=0;
     for(unsigned int i=0;i<1000;i++)
     {
         for(unsigned int j=0;j<row.size();j++)
         {
             sum+=row[j];
         }
     }     
  endTime = clock();
  cout << "The run time is: " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;

2. vector长度提取(避免每次计算长度)

测试用时: 8e-6s

代码语言:javascript
复制
    vector<double> row(100);
     double sum=0;
     unsigned int n=row.size();
     for(unsigned int i=0;i<1000;i++)
     {
         for(unsigned int j=0;j<n;j++)
         {
             sum+=row[j];
         }
     }     

3. 倒序写法(看不习惯,但省时)

测试用时: 7e-6 s

代码语言:javascript
复制
     vector<double> row(100)
     double sum=0;
     for(unsigned int i=0;i<1000;i++)
     {
         for(unsigned int j=row.size();j>0;j--)
         {
             sum+=row[j];
         }
     }     

4. 变量作用阈最小原则,且省时

测试用时:8e-6 s

代码语言:javascript
复制
 for(unsigned int i=0;i<1000;i++)
     {
         for(unsigned int j=0, n=row.size();;j<n;j++)
         {
             sum+=row[j];
         }
     }

5. Iterator遍历写法

测试用时:8e-6 s

代码语言:javascript
复制
for(auto iter =row.cbegin(); iter != row.cend(); iter++) 
  {
         sum+=row[*iter];
   }

6. 循环嵌套(外大内小原则)

(很好理解1000 > 100)

7. 异常处理写在循环外面

代码语言:javascript
复制
//前
for(int i=0;i<row.size();i++)
{
   try{}
   catch(Exception e){}
   }
 //后
 try{
 for(int i=0;i<row.size();i++){
 }
 }
 catch(Exception e){}

8.循环嵌套提取不需要循环的变量

代码语言:javascript
复制
//前
int a=1,b=2;
for(int i=0;i<row.size();i++)
{
  i=i*a*b;
  }
 //后
 int a=1,b=2;
 int c=a*b;
for(int i=0;i<row.size();i++)
{
  i=i*c;
  }

看来最常用的,反而更耗时,捂脸


博主:菜鸟程序员

初衷:学习资料,程序设计,视觉算法,求职经验,工作心得

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码出名企路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档