代码调优

来源:互联网 发布:微信浏览器js刷新页面 编辑:程序博客网 时间:2024/06/10 04:54

1.整数取模优化

因为C语言中的模运算%开销大,所以用

value += dalta;if (value > size)value -= size;

代替

value = (value + delta) % size;


2.用宏定义代替简单函数,减少函数调用开销,但是避免在递归调用的语句中使用


#define MAX(x, y) ( (x) > (y) ? (x) : (y) )

代替

int max(x, y){return x > y ? x : y;}

3. 顺序搜索的时候用哨兵合并测试条件

int search(int array[], int size, int value){//array长度为size + 1int  array[size] = value;int i;while (array[i] != value)i++;if (i == size)return -1;elsereturn i; }

代替

int search(int array[], int size, int value){int i;for (ij = 0; i < size; i++)if (array[i] == value)return i;return -1;}


4.顺序搜索的时候用展开循环来消除自增,循环展开有利于避免管道阻塞,减少分支,增加指令并行性。

int search(int array[], int size, int value){//array长度为size + 1int  array[size] = value;int i;while (array[i] != value){if (array[i] == value)break;if (array[i + 1] == value){i += 1;break;}if (array[i + 2] == value){i += 2;break;}if (array[i + 3] == value){i += 1;break;}if (array[i + 1] == value){i += 3;break;}if (array[i + 4] == value){i += 4;break;}i += 5;}if (i == size)return -1;elsereturn i; }

代替

int search(int array[], int size, int value){//array长度为size + 1int  array[size] = value;int i;while (array[i] != value)i++;if (i == size)return -1;elsereturn i; }




 

0 0
原创粉丝点击