最近我遇到了功能记忆。
我已经读到,它可以用于优化对执行大量计算的函数的调用,方法是在函数参数不变的情况下将其结果缓存起来。
我的问题是,我应该始终在所有可能的地方使用备忘录还是仅对具有大量计算操作的功能使用备忘录?
也就是说,我也可以将其用于返回布尔比较的简单函数,但是这样做不会增加负载吗? (导入库,使用装饰器,使用备忘功能包装等)。
示例(随机)函数:
function isBigger(a: number, b: number) {
return a > b;
}
答案 0 :(得分:3)
在备忘录成为值得做的事情之前,您通常还可以对代码进行其他几种优化。而且,如果实施不当(或仅使用浅浅的相等性),可能会导致一些难以检测的错误。
例如,如果参数是一个数组,并且有新内容推入该数组,则它仍然是同一数组。浅的备注将看到输入没有更改(是相同的数组),并返回备注的值。
但是除了Shallow之外,其他任何东西都可能很容易变得与您要优化的东西一样昂贵。
因此,有时它很有用,但通常比其价值多得多的麻烦和混乱。我在React中使用它来阻止不必要的某些简单组件的重新渲染。
我应该尽可能始终使用备忘录
否。
还是仅用于具有大量计算操作的功能?
要谨慎。
答案 1 :(得分:1)
功能记忆就像缓存一样。想象您从服务器获取响应并将其放入缓存,每当您尝试再次获取相同的数据时,您只是从缓存中获取响应,因此您正在进行性能和内存优化。函数存储的情况与此相同,您传递一些参数,而Javascript引擎知道这些相同的参数返回相同的答案...,因此也是性能和内存优化。 这是一个很酷的功能,在某些情况下,备注起着重要的作用。我的建议是:如果可以,请使用它,如果它会使您的代码混乱,请不要使用它