写递归函数像写诗,优雅但费命。Fibonacci递归版几行代码就能让CPU风扇起飞——同样的计算重复千百遍,Python解释器照单全收。
函数式编程圈有个老梗:纯函数是"老实人",同样输入永远给同样答案。既然答案不变,为什么要问第二遍?
Memoization就是这个思路的落地。缓存第一次计算结果,后续调用直接查表,复杂度从指数级砍到线性。Python标准库functools.lru_cache一行装饰器搞定,官方文档却把它藏在角落多年。
对比测试很直观:递归Fibonacci(35)原本耗时4秒,加缓存后降到0.0001秒。提升不是10倍,是4万倍。
「这是函数式编程最实用的工具之一,Python让它简单到令人尴尬」——原帖作者这样评价。尴尬的是,多数开发者仍在Stack Overflow复制粘贴笨重的手动缓存代码。
lru_cache默认128条缓存,够大多数场景用。需要更多?括号里改个数就行。这个被低估的装饰器,可能是Python标准库里性价比最高的性能优化。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.