一、代码调优
1、问题1--整数取模
一种算法是:
k = (j + rotdist)%n;
另一种优化方法是:
k = j + rotdist;
if(k >= n)
k -=n;
2、问题2--函数、宏和内联代码
通过宏替换函数来打破函数层次,提高算法效率。
3、问题3--顺序搜索
一种优化是设置哨兵值来测试是否已经到达数组末尾。另一种优化是每次循环展开8次来删除自增的运算,从而节省了开支。
4、问题4--计算球面距离
使用复杂的10个正弦和余弦函数的三角公式,计算量很大。所以,可先用一些三角函数将经度和纬度转换成x、y和z坐标,然后计算该点到集合S中每个点的距离,它到S中某点的距离为三个维度上差值的平方和。减少了计算量。
5、原理
效率的角色、度量工具、设计层面、双刃剑。
二、节省空间
1、数据空间技术
(1)不存储,通过计算来得到要搜索的值;
(2)对于稀疏数据结构,可有效进行有效数据的存储;
(3)数据压缩,例如将两个十进制数字a和b编码在一个字节中,该信息可通过以下两个语句进行编码:
a = c / 10;
b = c % 10;
(4)分配策略,可进行空间预分配,然后在要用到空间时直接使用;
(5)垃圾回收;
(6)函数定义;
(7)解释程序;
(8)翻译成机器语言。
2、原理
空间开销、空间的“热点”、空间度量、折中、与环境协作、使用适合任务的正确工具。