一个好的控制结构对程序执行的影响是巨大的,因此,对控制结构优化非常重要。

今天我们来谈谈优化结构控制:

一 表达式优化———使用替换程序中的乘除法

表达式优化是最基本的优化,使用简洁高效的表达式可以大幅度的提高程序的效率。优化是一个广泛而深入的话题,在程序执行过程中,加减法是计算机最喜欢的操作。其执行时间只占用1个时钟周期,是最快速的操作。位运算与移位计算执行速度与减法相近,乘法时间要长,大概在5~6个周期完成。不用说都知道除法最慢,大约需要50个时钟周期。因此,我们需要用一些操作代替乘除法。

1.移位操作代替乘法:

这显然可以提高程序的运行效率。
举例说明:
#include <stdio.h>int main()
{int a=16;printf("a divided by 4:%d\n",a>>2);printf("a multiplied by 5:%d\n",(a<<2)+a);return 0;
}

输入结果:

a divided by 4:4
a multiplied by 5:80
移位操作是一个很好的选择,数据左移移位相当于乘以2,右移移位相当于除以2。
总结:所有乘法操作都可以用左移运算来替换,例如:a*8可以替换为a<<3,而a*13可以替换为(a<<3)+(a<<2)+a,但是除法操作不可以。只有除法操作的除数正好是一个2的n次幂才能用右移操作来替换除法,例如:a/8可以替换成a>>3,但是a/13却无能为力了。

二 结构优化——常量折叠

在进行计算中,通常要进行连续的四则运算,例如:
int a=10;
a=a+2*17+6;
这个程序实际上相当于
int a;
a=a+40;

如果写成第二种形式,程序只用执行一次。

如果写成第一种,程序要进行1次乘法2次加法。
谁速度快就一目了然了。这种将程序中的常量人为的计算的方法叫做常量折叠。
对于现代的编译器来说,常量折叠已经是一种常规的常量折叠方式。也就是说,即使研发人员没有使用常量折叠,编译器会自己执行。当然有些情况不使用会更好,便于理解与维护。

大话C语言——优化结构控制(一)相关推荐

  1. R语言大全(后续更新和优化结构)

    R语言和社会统计分析-个人总结(后续更新和优化结构) 基本语法 包的安装和下载 # 获取包含R包的库位置 > .libPaths() # 查看已经安装的包 > library() # 安装 ...

  2. 【Golang第8章:面向对象编程】Go语言的结构体是什么,怎么声明;Golang方法的调用和声明;go语言面向对象实例,go语言工厂模式;golang面向对象的三大特性:继承、封装、多态

    介绍 这个是在B站上看边看视频边做的笔记,这一章是Glang面向对象编程 这一章内容较多,内容有Go语言的结构体是什么,怎么声明:Golang方法的调用和声明:go语言面向对象实例,go语言工厂模式: ...

  3. rust python扩展_Rust语言优化Python性能案例

    原标题:Rust语言优化Python性能案例 导读:Python 被很多互联网系统广泛使用,但在另外一方面,它也存在一些性能问题,不过 Sentry 工程师分享的在关键模块上用另外一门语言 Rust ...

  4. c语言选择结构程序设计笔记,C语言选择结构程序设计.ppt

    <C语言选择结构程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言选择结构程序设计.ppt(32页珍藏版)>请在人人文库网上搜索. 1.选择结构程序设计,关系运算符和关 ...

  5. 加法接力赛C语言算法,C语言循环结构

    <C语言循环结构>由会员分享,可在线阅读,更多相关<C语言循环结构(47页珍藏版)>请在人人文库网上搜索. 1.UML和需求建模,第六章,循环控制,UML和需求建模,主要内容, ...

  6. html语言简介 ppt,网页制作与HTML语言基本结构简介.ppt

    网页制作与HTML语言基本结构简介.ppt 第三章网页制作与HTML语言基本结构简介 本章提要静态网页与动态网页DreamweaverMX制作网页HTML语言的基本结构 3 1网页制作概述 3 1 1 ...

  7. c语言程序流程控制(下)

    c语言程序流程控制 嵌套 switch分支结构 语法 例题 switch细节 练习 switch与if语句的比较 循环控制 for循环 练习题 while循环控制 do while 循环 多重循环控制 ...

  8. C语言 基于结构体的程序设计(PTA)

    一.实验目的 1.掌握C语言中结构体类型的定义和结构体变量的定义和引用. 2.掌握用结构指针传递结构数据的方法. 二.实验内容 1. 计算职工工资 给定N个职员的信息,包括姓名.基本工资.浮动工资和支 ...

  9. 集成式电子液压制动系统液压力变结构控制

    转自:http://www.360doc.com/content/17/0530/15/28704984_658459526.shtml 集成式电子液压制动系统液压力变结构控制* 余卓平,韩 伟,熊 ...

  10. c语言计算支点距离,长安本科毕业论文设计-—三级齿轮减速器的优化设计(附c语言优化计算程序代码).doc...

    长安本科毕业论文设计--三级齿轮减速器的优化设计(附c语言优化计算程序代码) 二 ○ 一 三 届 毕 业 论 文 三级齿轮减速器的优化设计 学 院: 工程机械学院 专 业: 机械设计制造及其自动化 姓 ...

最新文章

  1. Oracle 安装完怎么用,oracle 11g 安装完怎么用
  2. Andropid自己定义组件-坐标具体解释
  3. 认识Skeleton Screen【屏幕加载骨架】
  4. python 硬件模拟_如何编写一个硬件模拟器?
  5. javascript 中文排序 localeCompare
  6. 冒泡排序法 - python版详解
  7. AD下安装Exchange及简单收发邮件【视频】
  8. Qt connect()的第五种重载[=](){}
  9. 遗传优化算法优化LSTM结构-准确率
  10. (筆記) 如何為ModelSim加入永久性的library mapping? (SOC) (ModelSim)
  11. OpenDDS应用开发步骤
  12. 1、项目搭建、本地视频列表展示
  13. 一起欣赏:50+ 极具创意的个人简历设计【下篇】
  14. matlab-基础 取整函数 向0取整 取最近整数 向上取整 向下取整
  15. IE首页被劫持,桌面图标异常的个人综合清理方法
  16. android模拟程序被杀死,Android模拟后台进程被杀
  17. EAS BOS:BOS工具导入解决方案失败常见问题分析
  18. 蛮X搜神记的NetManager分析(1)
  19. 【OpenCV 例程300篇】214. 绘制椭圆的参数详解
  20. 《机器学习》第四章 人工神经网络 深度学习启蒙篇

热门文章

  1. Vue之filters传参问题
  2. Spring Boot 接入支付宝,实战来了
  3. turbo编译加强java_给你无限可能,创造更多价值! TurboShop V3.5 版本发布
  4. 口袋妖怪金心银魂详细图文攻略(上)及游戏下载
  5. python求解组合数_6-2 jmu-python-组合数据类型-1.计算坐标点欧氏距离 (10分)
  6. 如何用微信小程序,每天给自己赚个鸡腿?
  7. OSChina 周三乱弹 —— 余生指教NMB
  8. hhkb mac设置_HHKB MAC 配置指南 操作指南 快捷键
  9. [线段树][数学]JZOJ 4237 Melancholy
  10. html图片排版技巧,【CSS技巧】多图片的垂直居中排版