编译器级别的代码优化对比

1、实验目的

在编程语言中,对比不同编程风格的代码写法,不同的编译优化参数所生成汇编代码的运行效率。

 

2、实验平台、工具

在Windows平台下,采用VC++编译器。

 

3、实验设计

对因子分解的算法优化

优化前:

int main(void)

{

int n;

scanf("%d", &n);

for(int n1=2; n1<=n;)

 {

if(n % n1 == 0)

{

n /= n1;printf("%d,", n1);

}

else {

n1++;

}

}

return 0;

}

 

优化后:

void main()

{

  int n, nsq;

scanf("%d", &n);

while( n % 2 == 0)

{

n /= 2;

printf("2,");

}

nsq = (int)sqrt((double)n); 

For(int n1=3; n1<=nsq; )

if(n % n1 == 0)

{

printf("%d,", n1);

n /= n1;

nsq = (int)sqrt((double)n); 

}

else

{

n1+=2;

}

}



4、实验步骤

1.在循环处优化,减少循环的次数

图表 1

2.右方经过优化减少了很多跳转的标签和跳转动作,体现了循环优化的结果

 

图表 2

5、实验结果讨论

通过这次实验,我更深刻地意识到程序优化的重要性,我采取了不同的编译优化参数来完成因式分解的算法,经过优化后通过汇编文件可以看出算法的优异性,跳转省了不少时间,可能在这一个小程序中还没有体现得明显,如果在一个项目中,程序的一点点优化可能就会影响整个项目的效率。

通过这次嵌入式的最后一次实验,虽说是个很小的实验,但重要性却不能小视,这告诉我们在写算法的时候先不要急于动手,应该从整体出发,观察需求看有没有更优的算法设计,这对整个项目设计都起到很重要的作用,麻雀虽小,五脏俱全,这次的编译器级别的代码优化对比实验为我以后的编程学习又上了一节重要的课,为我以后学习打下了坚实的基础。

 

 

 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值