我认为一个好的用于科学计算的程序代码应该:算法漂亮精妙,程序简洁易懂,运算快速,节省内存。这里有的地方是矛盾的,比如简洁vs易懂,时间vs空间,找个平衡吧。目前来看时间要比空间宝贵一些。写程序分几步:选择最妙的算法;规划最优的流程;规划数据结构、函数;编码实现。

一、算法优化

好的方法、算法是程序优化的根本,选择最好的算法永远是王道。

二、循环和判断步骤优化

规划流程时几个不依赖于编译器的tips:

1、减少循环体内运算量:

(a)查表:提前列表,循环内查表。

(b)提取循环的公共子式到循环外计算。

(c)将循环体展开以减少循环的判断过程。

2、判断式合理排列conditions减少判断次数:

(a)根据发生频率排列switch语句的case,或者if语句的条件式。

(b)将一些低概率条件合并及嵌套判断。

(c)将多重条件嵌套判断。

3、合理组织循环和判断的嵌套

(a)将值不变的条件式放在循环的外面。

三、数据结构的设计优化

1、使用尽量小的数据结构。如char好于int好于float。

2、使用便于运算的数据结构。

3、数据合理布局

(a)结构体数据成员按类型长度排序。

(b)把结构体填充成最长类型长度的整数倍。

4、变量名短好于长。

5、同时声明变量好于分别声明变量

四、数据操作优化

1、使用指针。

2、尽量使用常量。

3、常用变量设置为寄存器变量。

4、初始化好于赋值。

5、减少文件读取操作。

五、运算优化

C语言数据运算强度的优化,即使用快的运算代替慢的运算。

1、使用位运算。

2、用a*a代替pow(a,2.0)。

3、减少整数除法,如用i/(j*k)代替i/j/k。

六、C语言函数优化。

1、函数用inline代替外部调用(但会增加程序长度)。

2、定义函数原型,便于编译器优化。

3、不定义不使用的返回值。

4、本地函数声明为静态。

c语言 pow优化_c程序代码优化的一些方法相关推荐

  1. c语言 pow优化_C语言性能优化

    1.基本优化 (1)全局变量 全局变量绝不会位于寄存器中.使用指针或者函数调用,可以直接修改全局变量的值.因此, 编译器不能将全局变量的值缓存在寄存器中,但这在使用全局变量时便需要额外的(常常是不必要 ...

  2. c语言for循环++_C ++程序使用循环查找数字的幂

    c语言for循环++ Here, we are going to calculate the value of Nth power of a number without using pow func ...

  3. pt100 c 语言,PT100计算公式_C程序.doc

    PT100计算公式 基于ITS-90工业用铂电阻分度表IEC751的修订版.包含2个函数. #define A 3.9083e-3 #define B -5.775e-7 #define C -4.1 ...

  4. 优化C#程序的48种方法

    一.用属性代替可访问的字段 1..NET数据绑定只支持数据绑定,使用属性可以获得数据绑定的好处: 2.在属性的get和set访问器重可使用lock添加多线程的支持. 二.readonly(运行时常量) ...

  5. 万年历c语言编程代码_C语言高效编程与代码优化~

    译文链接:http://www.codeceo.com/article/c-high-performance-coding.html 英文原文:https://www.codeproject.com/ ...

  6. C语言---找零问题------程序优化

    C语言----找零问题----程序优化 题目详情: 现有一元,两元,五元面额的纸币若干,给出任意的找零要求,给出每种找零方案,输出循环次数. 优化代码一: 代码优化内容: 利用num/5,num/2来 ...

  7. 栈,寄存器,局部变量,内存,语言级别优化程序的方法

    栈,寄存器,局部变量,内存,语言级别优化程序的方法 栈是内存中开辟出一块空间,对应到汇编中就是栈段 stack segment,即SS,它是由高地址向低地址生长的 寄存器是CPU中的一些高速存储器,有 ...

  8. 【C/C++】用C语言编写爬虫—爬虫程序优化要点

    写一个网络爬虫 用C语言来写一个网络爬虫,来获取一个网站上感兴趣的信息,抓取自己需要的一切. #include<cspider/spider.h>/* 自定义的解析函数,d为获取到的htm ...

  9. c语言编程优化界面_C编程优化技术

    c语言编程优化界面 As we all know that C programming is a widely used and most popular programming language a ...

最新文章

  1. mysql执行事务的语句_详解MySQL执行事务的语法和流程
  2. 数据结构-栈详解(类C语言版)
  3. linux ps查看进程命令
  4. python input输入多个变量_「Python 秘籍」1.2 解压可迭代对象赋值给多个变量
  5. cas 4.2.7 官方手册_海城市地区,保险手册核验的简单流程
  6. 从WebRtc学习RTCP协议
  7. jquery中阻止事件冒泡的方法
  8. USACO-Section1.4 Barn Repair (贪心算法)
  9. aspx 获取html值,aspx解析之后的html代码获取
  10. 计算机综合应用上机考试题库,2016年计算机上机考试题库
  11. v8的垃圾回收机制(一)
  12. 问题五十六:怎么用ray tracing画参数方程表示的曲面(3)—— b-spline surface
  13. 吴恩达教授机器学习课程笔记【三】广义线性模型(1)-指数族分布
  14. stm32实现红外自发自收
  15. Plantcare_启动子预测结果_快速筛选指定基因启动子上的顺式作用元件个数
  16. ffmpeg 多个音频合并 截取 拆分
  17. linux查看固态硬盘寿命,CentOS下查看 ssd 寿命
  18. 普通人都能看懂的德州扑克-python版
  19. 软著申请材料,软著申请文件,软著登记材料,软著登记文件
  20. 【菜鸟学Python】爬取果壳问答

热门文章

  1. Minimum Ternary String CodeForces - 1009B(思维)
  2. 高并发图片实时渲染技术在阿里妈妈的大规模应用
  3. android最新框架,XUpdate 一个轻量级、高可用性的Android版本更新框架
  4. 计算机考到贴吧的试题,2014年全国计算机二级VB上机考试试题七
  5. 深度学习之循环神经网络(10)GRU简介
  6. mysql 搜索正则表达式_[MySQL] 用正则表达式进行搜索
  7. 图论-欧拉图-欧拉回路-Euler-Fluery-Hierholzer-逐步插入回路法-DFS详解-并查集
  8. 计组—中央处理器(CPU)
  9. iOS开发——MBProgressHUD 与 SVProgressHUD iOS提示框的优缺点
  10. linux内核编译与内核模块