智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3501|回复: 14
打印 上一主题 下一主题

C语言优化小技巧

  [复制链接]

3

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
72
威望
44
贡献
24
兑换币
22
注册时间
2013-2-28
在线时间
2 小时
毕业学校
中南林业科技大学
跳转到指定楼层
1#
发表于 2014-3-23 15:13:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C语言优化小技巧
在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考:
1.C
于代码在程序中的优化
  
现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码长度的平衡。如果要获得更小且执行效率更高的代码,需要程序员手工对代码进行优化。

2.
变量类型的定义
  
不同的数据类型所生成的机器代码长度相差很多,变量类型选取的范围越小运行速度越快,占用的内存越少。能够使用char(字符型)定义的变量,就不要使用整型(int)变量定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点(float)变量就不要使用浮点型(double)变量。
  
相同类型的数据类型,有无符号对机器代码长度也有影响。因此我们应按照实际需要合理的选用数据类型。当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现。

3.
提高循环语言的效率
  
C 语言中循环语句使用频繁,提高循环体效率的基本办法就是降低循环体的复杂性。在多重循环中,应将最长的循环放在最内层,最短的循环放在最外层。这样可以减少 CPU跨切循环的次数。如例 1-1 的效率比 1-2 的效率要高:

int i,j;

for (i = 0; i < 10; i++)
{
    for (j = 0; j < 20; j++)
    {
        ... ...
    }

} //
例子 1-1

for (j = 0; j < 20; j++)
{
    for (i = 0; i < 10; i++)
    {
        ... ...
    }

} //
例子 1-2


4.
采用数学方法优化程序
  
数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学算法会对程序的执行效率有数量级的提高。有时候这个问题常常被大家忽略, 对于没有经验的程序员来说更是如此。例如: 1100的自然数和sum = 100*(100+1)/2; 数学公式. (n +1)*n/2
  
优化算法和数据结构对提高代码的效率有很大的帮助。当然有时候时间效率和空间效率是对立的,此时应分析哪个更重要,做出适当的折中。另外,在进行优化的时候不要片面的追求紧凑的代码,因为紧凑的代码并不能产生高效率的机器码。

   
当然代码优化的方法还有很多,这里只是简单列举几个例子,希望能为初学者提供一些帮助。
信盈达培训心是深圳信盈达电子有限公司下属的培训技术服务机构,培训中心依托公司强大的研发队伍,培训老师均是从事多年电子产品、ARM项目开发、嵌入式Linux项目开发的资深高级工程师,拥有丰富的实际工作经验,能让你高起点入门,快速学会ARM、学会嵌入Linux。
教学特色:
  1.小班授课(3-6人)、保证教学质量;
     2.由具有丰富开发经验的资深嵌入式Linux工程师、国际项目经理主讲;
     3.理论联系实际、边理论边实践、学用结合、以实践为主(实践课程占60%以上)、手把手教学;
     4.每个课程均有“项目开发课程设计”,在资深工程师的指导下完成,让你真正具备项目开发经验;
     5.长期为学员**免费技术咨询;
     6.学习成绩优异者我们可推荐就业。
报名方式:
   1.电话报名:宋老师 0371-86629510   15236286825 3.QQ咨询:长期在线QQ:2905283896
由经验丰富的嵌入式工程师实战教学,手把手操作教学,以实践为主。
所有学员在学习期间均会获得我公司研发部十几位资深高级工程师、国际项目经理等的技术支持,除正常学习时间外,其他任何时间学员均可前来进行额外实践。

上课地点:郑州市金水区文化路82号数码银座B座401室(创新大厦对面)
每周末开设免费的公开课程,有兴趣的朋友可以电话咨询试听:0371-86629510

回复

使用道具 举报

27

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2302
威望
1491
贡献
159
兑换币
957
注册时间
2013-9-3
在线时间
326 小时
推荐
发表于 2014-3-23 19:11:20 | 只看该作者
回复 支持 0 反对 1

使用道具 举报

25

主题

1217

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
27554

论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章资源大师奖章

QQ
威望
18751
贡献
5861
兑换币
3255
注册时间
2012-6-6
在线时间
1471 小时
2#
发表于 2014-3-23 15:26:13 | 只看该作者
回复 支持 反对

使用道具 举报

27

主题

798

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6257

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
2948
贡献
1741
兑换币
1138
注册时间
2012-2-20
在线时间
784 小时
3#
发表于 2014-3-23 15:37:11 | 只看该作者
广告
回复 支持 反对

使用道具 举报

0

主题

130

帖子

0

精华

高级会员

Rank: 4

积分
940

活跃会员奖章优秀会员奖章

威望
430
贡献
268
兑换币
271
注册时间
2013-12-3
在线时间
121 小时
4#
发表于 2014-3-23 16:27:02 | 只看该作者
回复 支持 反对

使用道具 举报

7

主题

293

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4239

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
2079
贡献
1028
兑换币
1363
注册时间
2013-12-16
在线时间
566 小时
5#
发表于 2014-3-23 16:33:28 | 只看该作者
回复 支持 反对

使用道具 举报

22

主题

411

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5566
威望
2470
贡献
1416
兑换币
1607
注册时间
2012-10-21
在线时间
840 小时
6#
发表于 2014-3-23 16:53:32 | 只看该作者
发广告的啊
回复 支持 反对

使用道具 举报

55

主题

1235

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6072
威望
3023
贡献
1595
兑换币
1879
注册时间
2012-11-6
在线时间
727 小时
7#
发表于 2014-3-23 17:54:46 | 只看该作者
回复 支持 反对

使用道具 举报

18

主题

479

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1766
威望
798
贡献
472
兑换币
524
注册时间
2014-1-1
在线时间
248 小时
毕业学校
lll
8#
发表于 2014-3-23 18:17:34 | 只看该作者
回复 支持 反对

使用道具 举报

11

主题

568

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4803

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

QQ
威望
2487
贡献
1300
兑换币
1449
注册时间
2013-9-12
在线时间
508 小时
9#
发表于 2014-3-23 19:05:58 | 只看该作者
“当然代码优化的方法还有很多,这里只是简单列举几个例子,希望能为初学者提供一些帮助。”
我能说天然二的我看完这一句的时候还在心里重复感谢楼主吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 03:53 , Processed in 0.066165 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表