一些编程中的优化方法

以下是一些基本的编程遵循的守则:

  1、尽可能的使用32位数据。因为英特尔的处理器是以32为位基准的,其中对32位进行了优化。

  2、对于频繁调用的一些小函数,应声明为内联函数。

  3、尽可能的使用全局变量,但避免产生可读性差的代码。

  4、避免使用浮点数进行加法和减法运算,因为整数单元通常比浮点数单元运算快。

  5、尽可能使用整数。尽管浮点数处理器几乎和整数一样快,但是整数更加的精确。所以如果你不需要精确的小数位,就使用整数。

  6、将所有的数据结构均调整为32个字节对齐。在大多数编译器上你可以使用编译指示字来手共完成或在代码中使用#pragma。

   7、除非是简单类型的参数,否侧尽可能不使用值传递的方式传递参数。应当使用指针。

   8、在代码中不要使用register关键字。尽管微软声称他能够加快循环,但这会造成编译器没有足够可用的寄存器,结果是生成糟糕的代码。

   9、如果你是C++程序员,用类和虚函数是可以的,但软件的继承和层次不要过多。

   10、参与整数运算的必须是整数,浮点数也是如此。类型转换必定会降低性能。所以尽量避免类型转换,除非是逼不得已。

   11、通过左右位移操作可以实现整数的与2次幂运算。这样会比直接用其他符号算得来的快。

12、创建常量时,确保其为恰当的类型以防编译器编译出错获将其强迫转换为整数类型。最好是使用const指示字。

以上就这这些我从书籍上阅读整理的一些编程过程的一些优化,希望对大家有用

时间: 2024-11-10 01:14:38

一些编程中的优化方法的相关文章

深度学习之(十一)Deep learning中的优化方法:随机梯度下降、受限的BFGS、共轭梯度法

Deep learning中的优化方法 三种常见优化算法:SGD(随机梯度下降),LBFGS(受限的BFGS),CG(共轭梯度法). 1.SGD(随机梯度下降) 随机梯度下降(Stochastic Gradient Descent, SGD)是随机和优化相结合的产物,是一种很神奇的优化方法,属于梯度下降的一种,适用于大规模问题. 要想扯清楚它,还得先谈谈梯度下降.众所周知,每个优化问题都会有一个目标函数F(w)F(w),梯度下降采用迭代的策略,从初始点w0w0开始,每次沿着目标函数在当前点的负梯

槽填充中模式优化方法的研究

槽填充中模式优化方法的研究(硕士毕业论文) 沈晓卫 针对槽填充任务的实现方法 主要可以分为三种: 第一种是把槽填充任务转换为关系抽取任务,用传统的信息抽取方法来实现槽填充任务,按照具体实现方法的不同,信息抽取方法又可以分为模式匹配的方法和基于分类器的方法 第二种是以问答系统(Question  Answering,QA)为基础,通过把槽填充任务中定义的每一个槽解析为一个等价问题集合的方式来完成槽填充任务. 最后一种是基于规则的方法,即直接依靠人工的方法为每一个槽构建对应的模式库或规则库,然后以这

Caffe中的优化方法

在Deep Learning中,往往loss function是非凸的,没有解析解,我们需要通过优化方法来求解.Caffe通过协调的进行整个网络的前向传播推倒以及后向梯度对参数进行更新,试图减小损失. Caffe已经封装好了三种优化方法,分别是Stochastic Gradient Descent (SGD), AdaptiveGradient (ADAGRAD), and Nesterov's Accelerated Gradient (NAG). Solver的流程: 1.     设计好需

机器学习中常见优化方法汇总

http://www.scipy-lectures.org/advanced/mathematical_optimization/index.html#a-review-of-the-different-optimizers 机器学习中数学优化专门用于解决寻找一个函数的最小值的问题.这里的函数被称为cost function或者objective function,或者energy:损失函数或者目标函数. 更进一步,在机器学习优化中,我们并不依赖于被优化的函数的数学解析表达式,我们通过使用$sc

数学工具(三)scipy中的优化方法

给定一个多维函数,如何求解全局最优? 文章包括: 1.全局最优的求解:暴力方法 2.全局最优的求解:fmin函数 3.凸优化 函数的曲面图 import numpy as np import matplotlib.pyplot as plt import matplotlib as mpl def fm(x,y): return np.sin(x)+0.05*x**2+np.sin(y)+0.05*y**2 x = np.linspace(0, 10, 20) y = np.linspace(0

Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖析

本文对于runOnGLThread方法的分析主要目的是为了帮助我的课程"拇指接龙游戏"学员更好地理解EasyNDK这个开源框架的使用.借助于这个框架,实现Android JAVA端与Cococ2d-x C++端交互,以及iOS Objective-C端与Cococ2d-x C++端交互将变得异常容易----极大地减少了相关的JNI编程与Objecive-C编程的代码量.但是,在EasyNDK的Android版本示例中在Java主Activity端存在如下代码段: public void

android开发中图片优化步骤

android开发中图片优化方法 1.图片加载方法,方便用户加载图片 /*** * 加载本地图片 * @param context:主运行函数实例 * @param bitAdress:图片地址,一般指向R下的drawable目录 * @return */ public final Bitmap CreatImage(Context context, int bitAdress) { Bitmap bitmaptemp = null; bitmaptemp = BitmapFactory.dec

软件性能优化方法汇编

本文主要是对平时工作和Ulrich Drepper的<What Every Programmer Should Know About Memory>中软件性能优化方法的总结归纳,主要为了方便日后快速查看和检查,不涉及方法具体细节.本文涉及的软件性能优化手段包括cache.TLB.预取.多线程.总线带宽.NUMA等.日后会不定期更新. cache优化 跳过cache 对于一次性的读写操作(比如网卡收发包等),因为数据不会被重复使用,所以没有必要把数据更新到cache line中,避免换出cach

关于网络编程中MTU TCP UDP优化设置总结

首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层.  其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} --------------------------------------------------------------------------------- 在应用程序中我们用到的Data的长度最大是多少,直接取决于底层的