科技咖 导航
首页 > 科技咖 > 正文

尤其是像JavaScript,Memoization

2021-01-14 来源:互联网 编辑:小优 阅读人数:903

尤其是像JavaScript,Memoization(图1)

成为程序员最好的事情之一就是你永远都不要停止学习。总会有一些技术要学习,尤其是像JavaScript。当我们的程序变得复杂时,对速度的需求就成为了主要的因素。当我们的代码不断变得繁琐时,性能优化成为必要。Memoization是一个概念,即使复杂度更高,但它可以帮助你构建高效的程序。Memoization的概念与JavaScript中的纯函数和函数式编程密切相关。

你必须记住,Memoization只是一个概念,并不依赖于JavaScript或任何特定的编程语言。在本文中,我们将从JavaScript的角度来看Memoization。

What is Memoization?

通过定义,Memorization是一种编程技术,用于缓存以前昂贵的计算结果,以便在传递相同的输入时可以快速检索到这些结果。

如果你进一步细分这个定义,你会发现有三个要点。

缓存结果-缓存是一种临时数据存储,可以在将来更快地访问数据。

昂贵的计算-这是指昂贵的计算或过程。“昂贵”一词的意思是这些进程消耗大量内存或花费大量时间,这两者在计算世界中都是宝贵的。

我们现在应该对Memoization有一个基本的了解。如果你还是不明白,别担心,下面我会帮你详细解释。

提示:使用Bit(Github)在项目之间共享可重用组件。Bit使共享,记录和组织来自任何项目的独立组件变得简单。

使用它可以最大程度地重复使用代码,在独立组件上进行协作以及构建可扩展的应用程序。

Bit支持Node,TypeScript,React,Vue,Angular等。

尤其是像JavaScript,Memoization(图2)

什么时候使用以及为什么要记住功能?

为什么?

让我们从为什么开始。Memoization可以极大地帮助你提高昂贵的函数调用的性能。当函数在经过大量计算后接收输入并返回输出时,可以缓存此返回值。如果再次接收到相同的输入,则逻辑上返回相同的输出,而不是从头开始计算。

什么时候?

仅当你的函数是纯函数时才可以Memoization函数。如果你的函数针对相同的输入返回不同的输出,则没有用处记住它。看看下面的代码。

function randomMultiplier(num)

return num * Math.floor(Math.random*10000)

// You might get different outputs

即使输入相同,每次调用函数时输出也不同。记住这样的函数是没有用的。

此外,在某些情况下你可以记住你的功能。

它们是递归函数,其中输入值被重复。

函数调用很昂贵

结论:

关于Memoization你要记住三个要点。

没有以下概念,Memoization就不会存在。

纯函数-虽然我在前面提到过这个,但是为了记忆,函数必须是纯的。

高阶函数-这些函数返回另一个可以在以后调用的函数。

关闭-由于闭包和高阶函数,存在于函数中的缓存可以记住它的值。

本文相关词条概念解析:

函数

函数(function),最早由中国清朝数学家李善兰翻译,出于其著作《代数学》。之所以这么翻译,他给出的原因是“凡此变数中函彼变数者,则此为彼之函数”,也即函数指一个量随着另一个量的变化而变化,或者说一个量中包含另一个量。函数的定义通常分为传统定义和近代定义,函数的两个定义本质是相同的,只是叙述概念的出发点不同,传统定义是从运动变化的观点出发,而近代定义是从集合、映射的观点出发。

上一篇
王成录,鸿蒙OS并非应对美国制裁的替代品,对于鸿蒙系统的定位
下一篇
尽管Apple,Watch专利,7,series,换表吧
热点推荐