Javascript代码编写的逻辑冗余

数据冗余,用空间换取空间。

最常见的就是,关系型数据库设计,故意加其它table出现过的字段,然后查询某些数据就不用跨表查询,这样查询效率较高,这是优点。

优点之后是缺点,缺点就是,修改数据,要跨表修改。

那么,逻辑冗余呢?

我遇到的情况之一就是,js自身的bug了,就是浮点数运算,偶尔会算着算着,突然冒出个结果是.0000000000之类。

(这个呢,本身就是语言错误,那么我们要不要进入这个语言的源代码,来改写我们的js代码。可以,但代价高。

而且,语言自己也会升级,当发现这是个bug,下个版本大多数情况下会修复。于是你以前写的代码很可能被废弃了。)

于是,在js浮点数计算里面,基本用toFixed(n)来保证你要的精确度,不止一次使用,可能的话,处处使用。

用代码数量换取结果的准确性。cpu对于同个逻辑执行好几次。

因为有时候,对于某段代码的执行结果,你也不敢确定。尤其是修改别人的代码。这时候你就要逻辑冗余。

优点就是,保证运算的结果准确性。

缺点就是,下次修改代码,处处修改。

 

另一个逻辑冗余的例子:

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;
}

上述例子,是冒泡排序。

在第二个for循环里面,其实没必要每次都循环array_length次,这样会增加判断次数,从而增加cpu负担。但是结果还是一样。

从性能上说,这不是块好代码。

但从代码的记忆上,和编写上,是块好代码。 

 

 



posted @ 2012-07-02 19:11  草珊瑚  阅读(620)  评论(0编辑  收藏  举报