【发布时间】:2018-12-23 08:43:30
【问题描述】:
我最近接受了一次采访,有人问我如何缓存任何函数的执行?我只听说过 Javascript 中的功能缓存。
我检查了Stack overflow,但没有从中得到任何想法。记忆和缓存功能的执行是相同的还是不同的?
我知道 Javascript 中的函数缓存 称为 Memoization,它只缓存结果而不是执行,但 缓存函数执行呢?。
【问题讨论】:
-
你说的是记忆化吗?
-
也许你读到的和面试官说的其实是一回事,但是因为你们都不知道这个(记忆)的正确术语,所以你很困惑?
-
“缓存执行”对我来说似乎与 js 的 JIT 优化策略有关;几乎可以肯定这不是他们问你的。我认为他们也在谈论记忆。
-
这就是备忘录
-
那仍然是记忆。您所指的“缓存函数执行”仍然使用相同的记忆概念,不同之处在于您有一个可以重用的工厂函数。基本上,一个缓存装饰器。您不会直接在 main 函数中添加缓存(如示例 17 中所示),但是,通过组合,您可以将 memoization 添加到您的函数中。 @NullPointer,原始函数根本不知道记忆。例如,您可以有一个普通的“fibonacci”函数,没有缓存,而
const fibonacciWithCaching = cacheFn(fibonacci)有缓存。