美文网首页
JavaScript利用记忆函数提高性能

JavaScript利用记忆函数提高性能

作者: 环零弦 | 来源:发表于2017-12-25 15:02 被阅读0次

抄自掘金文章《JavaScript的记忆函数真的可以提升性能吗?

原理:利用函数闭包在函数内部保留之前的计算结果,以达到减少计算的目的。

  1. 带记忆函数:

    let isPrime = (function () {
      let hash = { //哈希中存储类似这样的结构
        //8: false,
        //7: true
      }
      let isPrime = (n) => { // 返回内层函数
        if (n < 3) {
          return true
        } else if (hash[n] !== undefined) {
          return hash[n]
        } else {
          for (leti = 2; i < Math.sqrt(n); i++) {
            if (n % i == 0) {
              return hash[n] = false;
            }
        }
        return hash[n] = true
       }
      }
      return isPrime
    })() //这个函数使用闭包 和 一个对象(实现记忆)
    
  2. 普通函数:

    let isPrime1 = (n) => {
      if (n < 3) {
        return true;
      } else {
        for (leti = 2; i < Math.sqrt(n); i++) {
          if (n % i == 0) {
            return false;
          }
        }
        return true;
      }
    }
    
  3. 测试

    let array = []
    for (leti = 0; i < 1000000; i++) {
      array.push(parseInt(Math.random() *1100 ))
    }
    
    console.time('isPrime')
    for (let i = 0; i < array.length;i++) {
      isPrime(array[i])
    }
    console.timeEnd('isPrime')
    
  4. 结果
    On node v8.2.0

    isPrime: 13.068ms // With Memory
    isPrime: 42.026ms // Without Memory

相关文章

网友评论

      本文标题:JavaScript利用记忆函数提高性能

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