美文网首页
高性能js之算法和流程控制

高性能js之算法和流程控制

作者: newway_001 | 来源:发表于2019-08-26 15:08 被阅读0次

大多数编程语言中,代码执行时间大部分消耗在循环中,所以循环也是提升性能的重要环节之一

循环:

-1 for in循环
-2 for循环
-3 do while循环
-4 .while循环

for in循环可以枚举任何对象的属性名(不是值),但是for in比其他三个循环明显要慢,所以除非要迭代一个属性数量未知的对象,否则避免使用for in循环,如果遍历一个属性数量已知属性列表,其他循环比for in快,比如:

var arr = ['name','age'],
        i = 0;
    while(i < arr.length){
        process(object[arr[i]]);
    } 
//怎么获取对象属性名呢?Object.keys(object)

基于函数的迭代:forEach():
forEach遍历一个数组的所有成员,并执行一个函数
但是所有情况下,基于循环的迭代比基于函数的迭代快8倍,在运行速度要求严格时,基于循环的迭代优先于基于函数的迭代

条件语句

if-else对比switch:
当条件较少时 使用if-else更易读,而当条件较多时if-else性能负担比switch大,易读性也没switch好。
优化if-else的方法是:尽可能的把可能出现的条件放在首位,比如:

var i = Math.random(1);     
    if(i <= 0.8){            //i小于0.8是几率最大的,如果i的值满足i <= 0.8 后面的条件就不会再判断了
        ...
    }else if(i > 0.8 && i <= 0.9){
        ...
    }else{
        ...
    }

Memoization

利用缓存,减少计算

function memoizeA(n) {
                if(!memoizeA.cache){
                    memoizeA.cache = {
                        '0': 1,
                        '1': 1
                    }
                }
                if(!memoizeA.cache.hasOwnProperty(n)){
                    memoizeA.cache[n] = n * memoizeA(n-1)
                }
                return memoizeA.cache[n]
            }

            var a1 = memoizeA(4)
            console.log(a1)          //24
            var a2 = memoizeA(5)
            console.log(a2)            //120
            var a3 = memoizeA(6)
            console.log(a3)           //720

相关文章

  • 高性能js之算法和流程控制

    大多数编程语言中,代码执行时间大部分消耗在循环中,所以循环也是提升性能的重要环节之一 循环: -1 for in循...

  • 《高性能JavaScript》——算法和流程控制

    前言 代码的组织结构和解决具体问题的思路是影响代码性能的主要因素。程序运行速度与代码量的多少没有必然关系。这里讨论...

  • 高性能 JavaScript - 算法和流程控制

    这几天分享一下我看《高性能 JavaScript》的学习笔记,希望能对大家有所帮助。 循环 在 JavaScrip...

  • 2018-11-29

    17js流程控制switch 17js流程控制switch //js流程控制swi...

  • 高性能javascript--算法和流程控制

    - for,while和do-while性能相当 - 避免使用for-in循环,==除非遍历一个属性量未知的对象...

  • 高性能javaScript(四)——算法和流程控制

    JavaScript和其他编程语言一样,代码的写法和算法会影响运行时间。与其他语言不同的是,JavaScript可...

  • 算法和流程控制

    javascript和其他编程语言一样, 代码的写法和算法会影响运行时间。与其他语言不同的是,javascript...

  • 算法和流程控制

    for、while和do-while循环性能相当,并没有一种循环类型明显快于或慢于其他类型; 避免使用for-in...

  • JavaScript-03

    JavaScript-03 分支结构 流程控制语句 程序的流程控制 程序=数据+算法任何复杂的程序算法都可以通过"...

  • 4/07day28_js基础

    day28_js基础 回顾 JS基础语法 JS运算符 JS流程控制语句 条件语句 JS的条件语句和Java语法基本...

网友评论

      本文标题:高性能js之算法和流程控制

      本文链接:https://www.haomeiwen.com/subject/rhorectx.html