《高阶Perl》——3.11 传播福音

简介: 本节书摘来自华章计算机《高阶Perl》一书中的第3章,第3.11节,作者(美)Mark Jason Dominus,译 滕家海,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.11 传播福音

如果你正尝试向一个C程序员解释为什么Perl好,自动的记忆术是一个好例子。几乎所有的程序员都熟悉缓存技术。即使他们没在自己的程序里使用过任何缓存技术,他们也一定熟悉这个概念,来自网页浏览器里的,他们的计算机的缓存内存里的,DNS服务器里的,他们的网页代理服务器里的,或别的地方的缓存。缓存,就像大多数简单实用的主意,是无处不在的。

增加缓存不是非常麻烦,但至少需要几分钟修改代码。算上所有修改,你有可能犯错,这不得不计算进平均时间,一旦你完成了,可能发现缓存是个糟糕的主意,因为缓存管理的开销比函数的运行时间更长,或者因为在一次典型运行中,缓存命中的没有期望的多;那么就不得不移除缓存代码,然后你再次冒着犯错误的风险。这不是夸大问题,当然,在每个方向上至少会花费几分钟。

有了记忆术,增加缓存代码不再需要几分钟了,只要几秒钟就可以了。可以增加一行这样的代码:

memoize 'myfunction';

然后就不可能犯下严重的错误和破坏函数。如果记忆术表明这是个糟糕的主意,你可以在一秒钟以内关闭它。多数程序员会对这样的便利满意的。如果你有五分钟向一个C程序员解释Perl比C好在哪里,记忆术是一个很好的例子。

相关文章
|
3月前
|
Go
高效Go语言编程:os包实用技术大揭示
高效Go语言编程:os包实用技术大揭示
40 0
|
11月前
|
机器学习/深度学习 人工智能 JavaScript
直连Colab,支持20种编程语言:谷歌版ChatGPT代码水平反杀了?
直连Colab,支持20种编程语言:谷歌版ChatGPT代码水平反杀了?
126 0
|
存储 Python
深度之眼(十六)——Python:有益的探索
深度之眼(十六)——Python:有益的探索
深度之眼(十六)——Python:有益的探索
|
Python
【python学习小案例】提升兴趣之模拟系统入侵
【python学习小案例】提升兴趣之模拟系统入侵
【python学习小案例】提升兴趣之模拟系统入侵
|
人工智能 Ubuntu 搜索推荐
Python文本语音识别模块大比拼,看看青铜与王者的差别!
如果把Python比喻成游戏中的一个英雄,你觉得它是谁?对于Dota老玩家来说,我会想到钢琴手卡尔!感觉Python和卡尔一样,除了生孩子什么都可以做的角色。日常生活中,我们会涉及到很多语音播报的场景,比如郭德纲版的高德地图导航、超市门口的红外感知提醒欢迎光临、银行的自助叫号系统,等等...今天就和大家聊聊Python文本转语音,看看这些从青铜到王者的模块。
377 0
|
JSON JavaScript 前端开发
为什么配置模式令人抓狂?尝试用编程语言来写吧
本文将试着解释为什么大多数配置格式用起来都不太舒服,作者建议大家尝试使用一门真正的编程语言(例如,像 Python 这样的通用编程语言)来编写配置,通常这是一种可行的选择,且使用过程更感愉悦。
异常传播 | Python从入门到精通:高阶篇之四十一
当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播;如果函数中没有对异常进行处理,则异常会继续向函数调用处传播;如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播;直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息。
异常传播 | Python从入门到精通:高阶篇之四十一
|
机器学习/深度学习 程序员 语音技术