memoization 相关问题

在计算中,memoization是一种优化技术,主要用于通过函数调用来避免重复计算先前处理的输入的结果来加速计算机程序。

使用 Memoization 解决 Grid Traveler 问题时出现奇怪的值?

我正在学习动态编程,我刚刚开始解决一些简单的问题。我正在做一个网格旅行者问题,你从网格的左上角开始,你只能向左移动或做...

回答 2 投票 0

React 的 ESLint:是否有规则来检测需要 useMemo 的 props?

使用 React,在功能组件返回的 JSX 代码中我可以得到: 我的组件.jsx 或者 通过 React,在功能组件返回的 JSX 代码中我可以得到: MyComponent.jsx <MySubComponent props1={{a: 0, b:1}}/> OR <MySubComponent props2={["toto", "tata"]}/> 我的子组件是通过记忆导出的: MySubComponent.jsx export default React.memo(MySubComponent) 但是这会破坏记忆,因为格式为 {{...}} 或 {[...]} 的 props 每次都会实例化一个新的对象/数组(相同的值,但不同的内存地址) ,因此 React.memo 的 propsshallow-compare 看到它不同。 有没有 ESLint/JSLint 规则来检测这些类型的 props ? 您可以使用 useMemo 来记忆对象或数组并将其作为 props 传递给 MySubComponent,如下所示: const obj = React.useMemo(() => ({a: 0, b:1}), []); <MySubComponent props1={obj}/> 在 SubComponent.jsx 中 export default React.memo(MySubComponent); 这只适用于简单的对象。 由于您已经知道该问题,因此不需要 eslint 来识别它,除非这是一个重复的模式。看来你已经过了发现阶段了。 我建议选择以下两个选项之一: 使用自定义函数覆盖 React.memo(Component, isEqual) 的第二个参数,您可以在其中按值比较输入数组或对象,因此只要内容保持不变,更改 prop 引用就变得无关紧要。但是,如果您广泛地重新渲染该组件,这可能会成为一种开销。 您的另一个选择是在组件外部定义数组和对象,并继续传递修改后的内容,但保持引用相同。 是的,存在一个插件:eslint-plugin-react-perf -> https://www.npmjs.com/package/eslint-plugin-react-perf

回答 3 投票 0

递归、记忆和动态编程之间有什么区别? [重复]

相关问题: 动态编程和记忆:自上而下与自下而上的方法 我已经阅读了很多关于此的文章,但似乎无法理解它。有时递归和动态...

回答 5 投票 0

为 go 函数添加缓存,就好像它是静态成员一样

假设我有一个昂贵的函数 func 非常昂贵的函数(int) int 并且这个函数会因为同一个号码而被多次调用。 有没有一个好方法可以让这个函数存储以前的结果......

回答 4 投票 0

尽早突破开始/结束块

我想要一种方法来退出开始/结束块,同时仍然分配其结果分配给的变量。 定义 foo @foo ||= 开始 加上“运行” 如果为 true,则返回“提前离开”# 将是...

回答 2 投票 0

Java记忆方法

我遇到了一个有趣的问题,想知道是否以及如何在 Java 中完成此操作: 创建一个可以记住任何函数/方法的方法。该方法具有以下参数:我...

回答 3 投票 0

如何使用递归和记忆来了解一个字符串是否是其他两个字符串的组合?

考虑 2 个字符串: 一个=“wxy” b =“mnop” z =“wmxnoyp” 如果字符串 z 是字符串 a 和 b 的组合,且字符串 z 的长度等于...

回答 1 投票 0

最长公共子序列记忆

我尝试优化最长公共子序列问题的递归解决方案,但遇到了一些问题 我尝试这样做: 缓存={} def lcs1(s1,s2,i=0,j=0): 如果 i>=len(s1) 或 j>=len(s2): ...

回答 1 投票 0

DP 数组第 0 个元素初始化为 1 而不是 0

在使用下面的解决方案(取自https://emre.me/coding-patterns/staircase/)解决climbStairs问题(请参阅此处)时,我假设 dp 数组的每个值表示可以采取的方式数量。 ..

回答 1 投票 0

使用useCallback规则react-hooks/exhaustive-deps和过度优化

有很多关于eslint规则react-hooks/exhaustive-deps的帖子,还有关于记忆化钩子useMemo和useCallback的良好用法,它们通常被过度使用,但我...

回答 1 投票 0

NextJS 13 获取请求记忆

我正在使用 NextJS 13 开发 React 项目,并且在使用请求记忆进行获取时遇到问题。即使在同一个请求中,它也总是向后端发送请求。 我有一个简单的端点...

回答 1 投票 0

使用 useMemo 挂钩时重新渲染问题

const sum = useMemo(() => a + b, [a, b]) 当a和b互换时会发生什么。就像当前渲染中 a = 5、b = 10 一样。当a=10,b=5时会发生什么?会在...之后重新渲染吗

回答 1 投票 0

如何优化 React 中大量项目的渲染?

我有一个 React 组件,它使用 map 方法渲染大量项目(大约 1000 个)。每个项目都是一个复杂的组件,有自己的状态和属性,并且可以由用户更新。

回答 1 投票 0

Node.js 与 Rust,但 Node.js 更快 [已关闭]

我有一个名为 网格 这是来自动态规划问题“网格旅行者”。我用 JavaScript 和 Rust 编写了两次相同的函数,并对 1000 万次计算进行了基准测试

回答 1 投票 0

为什么我的备忘录对象打印所有组合?

我找到数组中等于目标总和的最短数字组合: def bestSum(targetSum, 数字, 备忘录 = None): 如果备注为“无”: 备忘录={} 如果备忘录中有 targetSum: 返回...

回答 1 投票 0

为什么Python斐波那契数列循环比递归慢? [重复]

下面是著名的斐波那契数列示例 # 测试.py 导入系统 sys.setrecursionlimit(20000) def fib_loop(n): 如果 n <= 1: return n fn, fnm1 = 1, 0 for _ in range(2...

回答 1 投票 0

《硬币找零2》:为什么这种动态规划实现效率不够高?

我正在做 LeetCode,第 518 题。硬币找零 II : 给你一个表示不同面额硬币的整数数组硬币和一个表示总金额的整数...

回答 1 投票 0

《硬币找零2》为什么这个DP实现效率不够高?

我正在做 LeetCode 518 题。硬币找零 II : 给你一个代表不同面额硬币的整数数组硬币和代表总金额的整数金额。

回答 1 投票 0

我为leetcode问题“硬币找零2”写了两个解决方案……为什么第一个不起作用而第二个却很好

问题: 给你一个代表不同面额硬币的整数数组硬币和代表总金额的整数金额。 返回组成的组合数

回答 1 投票 0

有什么理由要在 React 中记住 Redux 操作创建者吗?

我的同事表示,他发现的文章指出在 React 中记忆 Redux 操作创建者时性能会有所提高,但我没有找到任何支持这一点的内容,而且我真的无法...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.