在编写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.采用数学方法优化程序

  数学是计算机之母,没有数学的依据和基础,就没有计算机的发展,所以在编写程序的时候,采用一些数学算法会对程序的执行效率有数量级的提高。有时候这个问题常常被大家忽略, 对于没有经验的程序员来说更是如此。例如:求 1到100的自然数和sum = 100*(100+1)/2; 数学公式. (n +1)*n/2。

  优化算法和数据结构对提高代码的效率有很大的帮助。当然有时候时间效率和空间效率是对立的,此时应分析哪个更重要,做出适当的折中。另外,在进行优化的时候不要片面的追求紧凑的代码,因为紧凑的代码并不能产生高效率的机器码。

  当然代码优化的方法还有很多,这里只是简单列举几个例子,希望能为初学者提供一些帮助。

想学习C/C++的小伙伴也可以关注笔者的专栏一起学习~

C/C++学习笔记​zhuanlan.zhihu.com

怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...相关推荐

  1. python解魔方程序_写一个解二阶魔方的程序

    本文需要读者有一定的魔方基础, 最起码也要达到十秒内还原二阶魔方的水平, 并且手上最好有一个二阶魔方, 否则文中的很多东西理解不了. 另外, 这里使用的算法是我自己写着玩的, 如果你需要更成熟和专业的 ...

  2. hp designiet 500绘图仪程序_邹军:通过数控宏程序实现刀具寿命管理

    点击上方,关注我哈 (文章底部可以评论,欢迎对文章进行点评和知识补充) 数控编程教学 订单 | 技术 | 干货 | 编程 关注可加入机械行业群 [邹军,十多年数控工作经验,现自创一套有理论,有干货,还 ...

  3. cs架构用什么语言开发_用Rust语言开发微信小程序

    由于stdweb已经好久没有更新了,本人又写了另外一篇: JiaYe:用Rust语言开发微信小程序:wasm-bindgen​zhuanlan.zhihu.com stdweb可以轻松将Rust代码编 ...

  4. vhdl语言入门_初学Chisel语言,看这篇就够了:最方便简洁的入门资料整理

    声明:本文是我一个很优秀的学生总结的,放出来供广大chisel语言爱好者参考. Chisel(Constructing Hardware In a Scala Embedded Language)是U ...

  5. php开发桌面应用程序_使用PHP开发跨平台桌面应用程序的3种方法

    php开发桌面应用程序 PHP as a cross-platform desktop app development language? Blasphemy! Nonetheless, it's p ...

  6. 谷歌地图api 微信小程序_使用Google的融合位置提供程序API进行实时位置跟踪

    谷歌地图api 微信小程序 Location tracking and monitoring have seen a surge in modern application development w ...

  7. jlink怎么调试linux程序_使用jlink+gdbserver+insight调试ARM程序--配置insight

    1. 下载insight-6.8a.tar.bz2 编译:  ./configure --target=arm-linux --prefix=/opt/insight_arm --disable-we ...

  8. mpvue 微信小程序_使用Vue.js开发微信小程序:开源框架mpvue解析

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 成全 责编 | 阿秃 转自 | 美团技术团队企业博客 前言 mpvue是一款使用Vue.js开发微信小程序的前端框架.使用此框架,开 ...

  9. python 为什么动态语言图片_聊聊动态语言那些事(Python)

    动态编程语言是高级程序设计语言的一个类别,在计算机科学领域已被广泛应用.它是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化.动态语言 ...

最新文章

  1. Java类加载文章1(z)
  2. 【288天】每日项目总结系列026(2017.11.20)
  3. 关于虹软人脸识别SDK的接入
  4. 猜想:汇编指令push和pop对sp的处理顺序缘由
  5. 申请 Let's Encrypt 数字证书,并安装cerbot快速上手教程~~
  6. php图片滑动的属性,使用css怎么实现图片的滑动效果?(示例)
  7. SAP License:如何预防企业“癌症”
  8. 一维卷积神经网络_人人都能看得懂的卷积神经网络——入门篇
  9. mysql设置远程访问的权限
  10. 三言两语聊Python模块–文档测试模块doctest
  11. python分词工具,你用哪个
  12. SegNet(持续更新)
  13. UE编辑器修改背景theme
  14. 使用gitLab clone代码报错:error: RPC failed; curl 56 OpenSSL SSL_read: Connection was reset
  15. android icon背景透明,Android 图标去白色背景换成透明 用Photoshop实现
  16. AJPFX平台:01.14日内交易策略
  17. 不用PLC,怎么用组态王和step7编程软件结合实现新年晚会舞台灯光效果,简单好看怎么做?
  18. android开发沉浸式标题栏_android实现沉浸式状态栏
  19. 志翔科技亮相2022数博会 工业大数据技术支撑电力数智化
  20. Project 1:文章抄袭自动检测分析项目

热门文章

  1. Flask-hello程序
  2. hashmap::begin() 坑
  3. webpack流程图
  4. pfSense book之 Open***站点到站点连接示例(共享密钥)
  5. Storm的acker确认机制
  6. document 文挡对象 - JavaScript脚本语言描述
  7. 如何给按钮加上链接功能
  8. 面试常考的树,我这样讲给你听!
  9. SpringBoot +RabbitMQ 做智能家居,居然如此简单!
  10. MySQL 优化原理(三)