首页 > 解决方案 > 函数记忆应该总是首选吗?

问题描述

最近我遇到了函数记忆。

我已经读过,如果函数参数没有改变,它可以用来优化对执行一些繁重计算的函数的调用,通过缓存它的结果。

我的问题是,我应该尽可能地使用 memoization 还是只用于具有繁重计算操作的函数?

即,我也可以将它用于返回布尔比较的简单函数,但它不会增加负载吗?(导入库、使用装饰器、使用 memoize 函数包装等)。

示例(随机)函数:

function isBigger(a: number, b: number) {
    return a > b;
}

标签: angulartypescriptdecoratormemoizationmemoizee

解决方案


在记忆成为值得做的事情之前,您通常可以对您的代码进行一些其他优化。如果实施不当(或简单地使用浅相等),它可能会导致一些难以检测的错误。

例如,如果一个参数是一个数组,并且新的东西被推入该数组,它仍然是同一个数组。浅记忆会看到输入没有改变(是同一个数组)并返回记忆值。

但是除了 Shallow 之外的任何东西都可能很容易变得和你正在优化的东西一样昂贵。

所以,有时它很有用,但往往比它的价值更麻烦和混乱。我在 React 中使用它来阻止某些简单的组件不必要地重新渲染。

我是否应该尽可能使用记忆

不。

还是仅适用于具有繁重计算操作的功能?

谨慎。


推荐阅读