C++ 代码优化

本文仅仅记录一部分常用的C++代码优化技巧:

1.首先,要对release version进行性能测试和优化。对debug version进行测试没有任何意义。

2.对局部变量在使用之前再对其进行声明和初始化,这样既可以防止该变量的值被其他代码改变,并且通过初始化而不是赋值可以提高效率。

3.使用初始化列表来初始化自定义对象。

4.在可能的情况下,用prefix代替postfix。

5.尽量使用内敛函数,但不要滥用,如果,函数超过10行或包含循环就不能内敛。

6.重新组织结构,优化内存。

7.把频繁调用的代码转为汇编。

8.为了让编译器产生更好的代码,必须确定浮点型变量和表达式是float型的,要特别注意的是要以F或f为后缀。否则默认为double型的。

9.使用32位的数据类型:int ,signed,signed int,unsigned,unsigned int,long,signed long,long int,signed long int,unsigned long,unsigned long int.

10.无符号类型用于,除法和余数、循环计数、数组下标;

     有符号类型用于,整型到浮点的转化;

11.如果要用到无限循环,for(;;)要比while(1)的效率要高;

12.访问数组数据的时候用索引要比指针要效率高;

13.充分分解小的循环;

14.switch的用法,尽量按照case的值可能发生的顺序进行排序,并尽量使用小的连续的整数。

15.尽量使用const,而不是#define。

16.提升循环性能,把不随循环变化的计算,比如一些if语句提到for循环的外面。

17.如果一个函数在实现它的文件外未被使用的话,把它声明为static以强制使用内部连接。

 

 

 

下面把结构对齐的一些知识简单的回顾一下:

 (1)总结一

你会用sizeof吗?(vc篇)
 
 
  
本文主要包括二个部分,第一部分重点介绍在VC中,怎么样采用sizeof来求结构的大小,以及容易出现的问题,并给出解决问题的方法,第二部分总结出VC中sizeof的主要用法。

1、 sizeof应用在结构上的情况

请看下面的结构:

struct MyStruct

{

double dda1;

char dda;

int type

};

对结构MyStruct采用sizeof会出现什么结果呢?sizeof(MyStruct)为多少呢?也许你会这样求:

sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13

但是当在VC中测试上面结构的大小时,你会发现sizeof(MyStruct)为16。你知道为什么在VC中会得出这样一个结果吗?

其实,这是VC对变量存储的一个特殊处理。为了提高CPU的存储速度,VC对一些变量的起始地址做了“对齐”处理。在默认情况下,VC规定各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。下面列出常用类型的对齐方式(vc6.0,32位系统)。

类型
对齐方式(变量存放的起始地址相对于结构的起始地址的偏移量)

Char
偏移量必须为sizeof(char)即1的倍数

int
偏移量必须为sizeof(int)即4的倍数

float
偏移量必须为sizeof(float)即4的倍数

double
偏移量必须为sizeof(double)即8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值