【问题标题】:What is Memoization exactly?记忆化究竟是什么?
【发布时间】:2018-06-03 05:12:00
【问题描述】:

记忆化可以被视为一种设计模式还是仅仅是一种缓存方法?

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

【问题讨论】:

  • 一切都是设计模式

标签: javascript caching optimization design-patterns memoization


【解决方案1】:

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

相反,Memoization 更像是一种编码技术。虽然它经常在下面使用某种地图/字典对象,但该对象可以是本地的、特定于语言的对象,而不是自定义的特定于域的或知道上下文的专门/优化的手工制作的对象。所以,没有太多的设计实现细节。

因此,IMO 的关键决定性区别在于所涉及的抽象级别,在设计模式的情况下更高,而在记忆化、函数组合、柯里化等编码技术中则非常低。不过,这是一个定义问题。


维基百科:

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

...

设计模式可以被视为一种结构化方法进行计算机编程介于编程范式和具体算法级别之间。

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

而,

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

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

【讨论】:

  • @StefanoVollono NP!
猜你喜欢
  • 2021-10-16
  • 1970-01-01
  • 2014-10-28
  • 2012-08-27
  • 2010-11-12
  • 2011-03-18
  • 2011-01-22
  • 1970-01-01
相关资源
最近更新 更多