• Python 优化


    1. 局部变量优于全局变量

    2. 使用 . 调用不如直接导入或赋值,每次使用.(属性访问操作符时)会触发特定的方法,如__getattribute__()__getattr__()

    import math # 1
    # from math import sqrt # 2
    import datetime
    
    # 耗时: 25.813275
    start = datetime.datetime.now()
    size = 10000
    for x in range(size):
        for y in range(size):
            z = math.sqrt(x) + math.sqrt(y)
    end = datetime.datetime.now()
    print(end - start)
    
    
    def main():
        # 1. math.sqrt: 22.187628
        # 2. from math import sqrt, sqrt: 18.627520
        # 3. sqrt = math.sqrt 局部变量赋值: 17.320667
        size = 10000
        sqrt = math.sqrt # 3
        start = datetime.datetime.now()
        for x in range(size):
            for y in range(size):
                z = sqrt(x) + sqrt(y)
        end = datetime.datetime.now()
        print(end - start)
    

    3. 使用 if 短路特性,配合 and or 使用

    4. for 循环优于 while 循环,因为每次循环中, while 实际上比 for 多执行了两步操作:边界检查和变量 i 的自增。

    def while_loop(n=100_000_000):
        i = 0
        s = 0
        while i < n:
            s += i
            i += 1
        return s
    
    
    def for_loop(n=100_000_000):
        s = 0
        for i in range(n):
            s += i
        return s
    
    
    def main():
        print('while loop\t\t', timeit.timeit(while_loop, number=1))
        print('for loop\t\t', timeit.timeit(for_loop, number=1))
    
    
    if __name__ == '__main__':
        main()
    # => while loop               4.718853999860585
    # => for loop                 3.211570399813354    
    

    5. 多层 for 循环时,减少外层 for 循环层数,遵循 外小内大原则。自己测试差距很小,甚至没有

    6. 交互变量无需中间临时变量,a, b = b, a

    7. 字符串相加使用 join 而不是 +

  • 相关阅读:
    5.2 HTML5表单与PHP交互
    5.1 HTML5表单的创建
    4.3 HTML5布局的使用
    MATLAB矩阵——2.5稀疏矩阵
    MATLAB矩阵——2.4矩阵的特征值与特征向量
    MATLAB矩阵——2.3矩阵求值
    MATLAB矩阵处理——2.2矩阵变换
    MATLAB矩阵处理——2.1特殊矩阵
    MATLAB基础知识——1.6基本运算
    MATLAB基础知识——1.5矩阵元素的引用
  • 原文地址:https://www.cnblogs.com/JulyShine/p/16159113.html
Copyright © 2020-2023  润新知