1.代码逻辑冗余

如果说代码记忆度为性,代码执行效率为价,不追求完美,而追求性价比的代码。

那么,

 function bubble_sort(array){

    var i,j,temp,array_length = array.length;
    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 myTab(anchor_arry,body_array){
    // 思路:先全部隐藏,再只显示一个
    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);
    }
}
 

 


合乎自然而生生不息。。。