时代高速发展,技术日新月异。各司左手分布式,右手高并发。嘴上骂骂咧咧动不动优化的卷王,近日出现的可真不少。
他卷任他卷,躺平治百痛,吾可被累死,但也要卷死尔等。
那么今天咱们也聊聊“代码优化”?
如何写出更快更好的代码?
编程技巧
- 更清晰的代码组织结构
 - 更明了的命名,更好的逻辑结构
 
编码技巧
- 更少的占用
 - 更快的运行
 
其实说到这个往细致了说就是 算法和数据结构的事儿,但为什么我觉得差点意思呢?
优化原则
- 保证代码正常工作
 - 权衡“优化”代价
 - 定义性能指标,集中力量解决首要问题
 - 不要忽略可读性
 
优化代码
发现烂代码
测试与分析
- 
                                        
单元测试、基准测试
 - 
                                        
性能分析、代码覆盖率分析、时间、空间负责度分析
 
修改烂代码
- 更低的代码覆盖率,更多的可重用代码
 - 更好更省的算法
 - 更符合的语言特性
 - 更顺应度调度
 
保持书写好代码的习惯
Python优化技巧
分析
- 最懒的性能分析:Unix time
 - 内存分析:memory_profiler
 - 引用分析:Obj graph
 - 最详细的性能分析:cProfile、
 - pytest
 
建议
- 使用尽量低和省的算法与数据结构
 - 尽量使用内置数据类型,尽量使用内置函数
 - 使用LRU_Cache 缓存数据
 - 尽量使用局部变量:与每个作用域内查找变量的速度有关,局部变量最快,类级属性中等,全局变量最慢
 - 使用函数
 - 提防字符串:在循环中运行 模数(%s)或 .format() 会变量,优先用 f-string
 - 巧用多重赋值
 - 使用生成器
 - 使用MultiProcessing克服GIL、使用线程池、使用Coroutine
 - 使用C/C++ 模块提高性能,使用Cython
 - 使用JIT
 
一些分析工具:
阿姆达尔定律:Amdahl’s law