我刚开始使用Python,我不知道什么是memoization以及如何使用它.另外,我可以有一个简化的例子吗?
2008年7月中旬,Memoization被添加到Rails核心.这里使用的演示.
我还没有找到任何关于何时应该记忆方法的好例子,以及每个方法的性能影响.例如,这篇博客文章表明,通常不应该使用备忘录.
对于可能具有巨大性能影响的东西,除了提供简单的教程外,似乎没有什么资源可供使用.
有没有人看到他们自己的项目中使用的memoization?哪些因素会让您考虑记忆方法?
在我自己做了一些研究之后,我发现在Rails核心中使用了很多次memoization.
这是一个例子:http://github.com/rails/rails/blob/1182658e767d2db4a46faed35f0b1075c5dd9a88/actionpack/lib/action_view/template.rb.
这种用法似乎违背了上述博客文章的发现,发现备忘可能会损害性能.
我应该用吗? if defined?
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
Run Code Online (Sandbox Code Playgroud)
要么 ||=
@current_user_session ||= UserSession.find
Run Code Online (Sandbox Code Playgroud)
我注意到if defined?最近使用的方法越来越多.一个人对另一个人有什么好处吗?就个人而言,我更喜欢||=可读性.我也认为Rails可能有一个memoize透明地提供这种行为的宏.是这样的吗?