什么是Memoization?

时间:2017-12-20 15:30:13

标签: javascript caching optimization design-patterns memoization

可以将memoization视为设计模式还是简单的缓存方法?

https://addyosmani.com/blog/faster-javascript-memoization/

1 个答案:

答案 0 :(得分:4)

在实际意义上,设计模式通常定义多个相对复杂的类/对象如何交互。甚至Singleton [反]模式不仅描述了对象的创建方式,还描述了其他对象如何使用它......

相反,记忆更像是一种编码技术。虽然它通常在下面使用某种地图/字典对象,但该对象可以是本机的,特定于语言的对象,而不是自定义特定于域或专门/优化的手工制作的对象,它们可以识别上下文。因此,设计实现细节并不多。

因此,关键的确定性差异IMO是涉及的抽象级别,在设计模式的情况下更高,并且在编码技术(例如,记忆,功能组合,currying等)中非常低。不过,这是一个定义问题。

百科:

  

...软件设计模式是软件设计中给定上下文中常见问题的通用可重用解决方案。

     

...

     

设计模式可被视为结构化方法到计算机编程介于 编程范例和具体算法的级别之间。< / p>      

- https://en.wikipedia.org/wiki/Software_design_pattern

而,

  

memoization 或memoisation是一种优化技术主要用于通过存储昂贵的函数调用的结果来加速计算机程序,并在再次发生相同的输入时返回缓存的结果

     

- https://en.wikipedia.org/wiki/Memoization