angular - 函数记忆应该总是首选吗?
问题描述
最近我遇到了函数记忆。
我已经读过,如果函数参数没有改变,它可以用来优化对执行一些繁重计算的函数的调用,通过缓存它的结果。
我的问题是,我应该尽可能地使用 memoization 还是只用于具有繁重计算操作的函数?
即,我也可以将它用于返回布尔比较的简单函数,但它不会增加负载吗?(导入库、使用装饰器、使用 memoize 函数包装等)。
示例(随机)函数:
function isBigger(a: number, b: number) {
return a > b;
}
解决方案
在记忆成为值得做的事情之前,您通常可以对您的代码进行一些其他优化。如果实施不当(或简单地使用浅相等),它可能会导致一些难以检测的错误。
例如,如果一个参数是一个数组,并且新的东西被推入该数组,它仍然是同一个数组。浅记忆会看到输入没有改变(是同一个数组)并返回记忆值。
但是除了 Shallow 之外的任何东西都可能很容易变得和你正在优化的东西一样昂贵。
所以,有时它很有用,但往往比它的价值更麻烦和混乱。我在 React 中使用它来阻止某些简单的组件不必要地重新渲染。
我是否应该尽可能使用记忆
不。
还是仅适用于具有繁重计算操作的功能?
谨慎。
推荐阅读
- python - 如何在一个类中删除从另一个类创建的对象
- pandas - 如何使用 pandas 的 reindex 方法“ffill”插入数据?
- android - Flutter 布局不一致
- unity3d - (Unity3d)为什么quad上的视频纹理质量低于原始视频?
- image - 有没有办法为使用 Codeigniter 的文件夹中的每个图像调用返回单个图像?
- wso2 - WSO2 租户身份验证失败
- docker - 如何配置 nginx 以在 docker django 应用程序中提供静态文件
- java - 异步与新线程 - 需要解决方案的帮助(Java)
- html - 响应式设计制作
- matlab - 计算 KKT 系数