缓式评估也叫拖延战术,即把工作堆积到必须要做的时候才去做。
缓式评估的方法:
1.引用计数。如:
string s1="hello";
string s2=s1;
如果s2并不改变值,我们就可以让s2共享s1的值,这样就不需要调用赋值函数。直到非调用不可时,再去调用,如果,到最后都没有调用,则就省去了这部分的开销。
2.区分读和写:
string s1="hello";
cout<<s[3];
s[3]='c';
读取数据花费的代价比较低廉,而写入则需要花费比较昂贵的代价,对于这个,我们只能延缓决定“究竟是度还是写”。
3.缓式取出
如:程序是一个很大的对象,你要取出值得话,会花费很久时间。严重影响效率,而你每次并不都需要全部的值,所以,需要哪个值取出哪个是最理想的。(个人观点)
一个方法就是用指针来代替数据成员。
4.表达式缓评估:如:APL
缓式评估的好处:
1.可避免不必要的对象复制。
2.可区别读和写操作
3.可避免非必要的数据库读取动作。
4,。可避免非必要的数值运算。
坏处:
如果你的程序必须要进行计算或者复制等,那么缓式评估则会导致你的程序更缓慢。