提高程序效率小技巧

5/17/2007 3:03:57 PM

1 使用循环展开,对于循环内部只有一条语句可以采用循环展开来提升速度.
2 对于2的倍数除法使用&运算,如 30 除 4 的余数为 30 & 3,30 类最大的4的倍数为30 & ~3.一个数是否为2的幂 n & 1. 而判断一个变量中含有多少个1可以
3 对于一些只需要初始化一次的函数内部变量可以声明为static类型
4 对于过大的switch语句块,可以采用表驱动法,对于switch如果条件过多,后面的条件分支必须等待前面判断完毕才能执行。而采用表驱动可以直接跳转到要执行的语句.虽然vc release也会建表,但毕竟不是很智能
5  ^=  异或操作,切换某位状态由0到1,或者由1到0.   A ^= 0x00010 ,迅速切换第2位 . 这样比 true ,false 之类的切换要快。写法也简单
6 ! 操作,如 strcmp 判断两个字符相等返回0,而不是 true ,而0值确对应 false. 和0比较相对于其他比较要快些。所以 if(!strcmp(a,b)),注意: ! 对于大于 0 的数返回 0,!0 怎返回 1
7 ~= 判断1个dword 变量x有多少个位为1。 int c=0; for(;x~= x-1;c++); 最后c 为 x 含有1 的个数。
8 对于迭代器。for 语句中使用++iter , 而不是 iter++。

转载于:https://www.cnblogs.com/topameng/archive/2010/10/08/1845902.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值