美文网首页
函数记忆

函数记忆

作者: kevin5979 | 来源:发表于2021-02-05 08:52 被阅读0次
什么是函数记忆?
  • 函数记忆是一种编程技巧,通过牺牲算法的空间复杂度以换取更优的时间复杂度
函数记忆的实现
  • memorize函数中传入目标函数,返回一个新的函数,新函数执行多次 ,若参数一致,则通过缓存读取存取计算结果,实现函数记忆的效果
  • 需求: 计算25的阶乘
function factorial(n) {  // 定义一个递归阶乘函数
  if (n == 0 || n == 1) {
    return 1
  } else {
    return n * factorial(n - 1)
  }
}

// 记忆函数
function memorize(fn) {
  let cache = {}
  return function () {
  let key = JSON.stringify(arguments);
  if (cache[key]) {
    return cache[key]
  } else {
    cache[key] = fn.apply(this, arguments)
    return cache[key]
    }
  }
}
  • 测试
let newFn = memorize(factorial)
  console.time("1")
  console.log(factorial(25))
 console.timeEnd("1")

  console.time("2")
  console.log(newFn(25))
  console.timeEnd("2")

  console.time("3")
  console.log(newFn(25))
  console.timeEnd("3")

  console.time("4")
  console.log(newFn(25))
  console.timeEnd("4")
image.png
  • 第三、四次执行的是从缓存中获取结果,时间明显短了
注意:
  • 函数记忆适用于大量重复计算的场景
  • 如果不存在大量可能的重复计算,使用函数记忆会让计算更加低效
END

相关文章

  • 函数记忆

  • “函数记忆”

    在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复盐酸之前已被处...

  • 函数记忆

    什么是函数记忆? 函数记忆是一种编程技巧,通过牺牲算法的空间复杂度以换取更优的时间复杂度 函数记忆的实现 向mem...

  • 函数记忆

  • javascript函数与对象

    JavaScript 函数 存储函数 自记忆函数 函数定义 函数定义和函数表达式function add(a,b)...

  • 函数性能优化——函数记忆

    使用场景 当一些计算结果可以保留下来为以后的运算提供方便的时候, 就可以用到记忆话函数 记忆化函数将计算结果存储起...

  • 纯记忆函数

    纯记忆函数 使用闭包解决重复计算的性能开销 1.斐波纳列数列 func Memoize(function memo...

  • JavaScript 函数记忆

    本文已整理到 Github,地址 ? blog[https://github.com/lio-zero/blog]...

  • vue中记忆函数

    var message = 'Hello Vue.js!'message.split('').reverse()....

  • js—记忆函数 memoize

    应用场景:在切换select下拉框进行接口请求搜索的时候,如果频繁切换会给后台造成很大的压力,所以需要前端用记忆函...

网友评论

      本文标题:函数记忆

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