• 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负担。但是结果还是一样。

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

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




    合乎自然而生生不息。。。
  • 相关阅读:
    asp.net笔记第一章
    数据库复习笔记
    tp5博客项目实战2
    springboot调整MybatisPlus全局的验证策略
    SpringBoot整合MybatisPlus,并实现新增、修改、删除、查看、分页
    springboot整合Apollo
    创建apollo项目,并发布配置
    Apollo部门管理
    搭建Apollo环境(Ubuntu-18.04.4)
    启动apollo时出现的问题,../demo.sh: 行 84: curl: 未找到命令
  • 原文地址:https://www.cnblogs.com/samwu/p/2573612.html
Copyright © 2020-2023  润新知