1. 不假思索的写法(最为常见,且最耗时)
测试用时:0.000143s
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
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
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
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
for(auto iter =row.cbegin(); iter != row.cend(); iter++)
{
sum+=row[*iter];
}
6. 循环嵌套(外大内小原则)
(很好理解1000 > 100)
7. 异常处理写在循环外面
//前
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.循环嵌套提取不需要循环的变量
//前
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;
}
看来最常用的,反而更耗时,捂脸
博主:菜鸟程序员
初衷:学习资料,程序设计,视觉算法,求职经验,工作心得