美文网首页
优化:解决方案(摘自《python 高级编程)

优化:解决方案(摘自《python 高级编程)

作者: 逆小苍 | 来源:发表于2021-04-20 17:42 被阅读0次

Stefan Schwarzer在Europython 2006上用了一个原创的伪代码示例对优化一个程序做了概括

def optmize():
    """Recommended optmization"""
    # fix architecture
    assert got_architecture_right()

    # fix bugs
    assert made_code_work(bugs=None)

    while code_is_too_slow():
        wbn = find_worst_bottleneck(just_guess=False, profile=True)
        is_faster = try_to_optmize(wbn, run_unit_tests=True, new_bugs=None)
        if not is_faster:
            undo_last_code_change()

简单来说如下:

  • 优化架构
  • 让代码正常运行
  • 如果代码运行太慢
  • 找到瓶颈,不是凭空猜测,应该依据问题描述的范围轮廓
  • 尽力去优化瓶颈处,不要引入新的bug
  • 运行单元测试,判断代码运行的是否更快了
  • 如果没有,撤销代码改动

常见优化程序的一些解决方案

  • 降低复杂度
  • 多线程
  • 多进程
  • 缓存

快速检测导致瓶颈的代码行

  • 测量代码的回路复杂度
  • 测量Landau符号,也成为大O记号

对运行代价很高的函数和方法的结果,可以进行缓存处理,只要:

  • 该函数是确定性的,输入相同的值,生成的结果每次都相同
  • 函数返回值在一定时期内(不确定)持续有用和有效

相关文章

网友评论

      本文标题:优化:解决方案(摘自《python 高级编程)

      本文链接:https://www.haomeiwen.com/subject/mewnlltx.html