zoukankan      html  css  js  c++  java
  • 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负担。但是结果还是一样。

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

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




    合乎自然而生生不息。。。
  • 相关阅读:
    把函数作为参数,调用的时候,先判断这个参数是不是存在,然后调用函数的时候加上()
    @keyframes 和animation配合使用
    让sublime text3支持Vue语法高亮显示
    vue.js中的vue-cli中各个文件简单介绍
    函数节流
    Ajax原理
    Ajax同步
    判断数据类型的方法
    闭包的用途
    vue模板编译
  • 原文地址:https://www.cnblogs.com/samwu/p/2573612.html
Copyright © 2011-2022 走看看