1.代码逻辑冗余
如果说代码记忆度为性,代码执行效率为价,不追求完美,而追求性价比的代码。
那么,
function bubble_sort(array){
for(i=0; i<array_length; i++){//第n次
for(j=0; j<array_length; j++){//筛选出最大值,调换。虽然有重复比较,但是上一次循环已经得出最大值,所以不怕重复比较。
if(array[i] < array[j]){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return array;
}
function bubble_sort2(array){
var i,j,temp,array_length = array.length;
for(i=array_length; i>0; i--){//第一层循环每次少一次
for(j=0; j<i-1; j++){//两两前后互换
if(array[j+1] < array[j]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
bubble_sort比bubble_sort2更容易记住,但bubble_sort2比bubble_sort执行效率更高。
性价比来说,bubble_sort比bubble_sort2更高。如果不苛求性能,而大多数情况是不苛求性能,那么我们用bubble_sort何乐而不为呢。
也就说,代码逻辑冗余,让计算机多做一些没必要的计算,腾出人类大脑的记忆空间。
2.数据冗余
三范式减少了数据冗余,意味着跨表查询将会频繁,降低一些性能。以CPU运算时间换取了硬盘的存储空间。增加些数据冗余,则存储空间换取CPU运算时间。
3.思路冗余
排序不仅有冒泡排序,还有快速排序等。它们都能实现,从小到大的排序效果。区别在于,特定条件下的代码执行效率。
PS:代码逻辑冗余的example
1.Tab效果的js代码
// 思路:先全部隐藏,再只显示一个
function display_all_none(){
for(var j=0; j<body_array.length;j++){
body_array[j].style.display = "none";
}
}
for(var i=0; i<anchor_arry.length;i++){
anchor_arry[i].onclick = (function(i){
return function(){
display_all_none();
body_array[i].style.display = "block";
};
})(i);
}
}
合乎自然而生生不息。。。