加速python运行的骚操作!

发布时间 2023-11-16 22:56:11作者: hechengQAQ

一、代码优化原则

1.原则一:不要过早优化

很多人一开始写代码就奔着性能优化的目标,“让正确的程序更快要比让快速的程序正确容易得多”。因此,优化的前提是代码能正常工作。过早地进行优化可能会忽视对总体性能指标的把握,在得到全局结果前不要主次颠倒。

2.原则二:权衡优化代价

优化是有代价的,想解决所有性能的问题是几乎不可能的。通常面临的选择是时间换空间或空间换时间。另外,开发代价也需要考虑。

3.原则三:不要优化那些无关紧要的部分

如果对代码的每一部分都去优化,这些修改会使代码难以阅读和理解。如果你的代码运行速度很慢,首先要找到代码运行慢的位置,通常是内部循环,专注于运行慢的地方进行优化。在其他地方,一点时间上的损失没有什么影响。

 

二、具体内容

1.避免全局变量

由于全局变量和局部变量实现方式不同,定义在全局范围内的代码运行速度会比定义在函数中的慢不少。通过将脚本语句放入到函数中,通常可带来 15% - 30% 的速度提升。

局部变量的访问速度通常比全局变量快。这是因为局部变量存储在栈上,而全局变量存储在堆上。栈上的数据访问速度通常比堆上的数据访问速度快。这是因为栈是CPU缓存的一部分,而堆则不是。当你从堆上获取数据时,CPU需要先将数据加载到缓存中,然后再读取数据。而当你从栈上获取数据时,CPU可以直接从缓存中读取数据,这个过程更快。
局部变量的作用域更小,更易于管理:局部变量的作用域通常更小,这意味着它们的生命周期更短,更易于管理。全局变量的作用域通常更大,这意味着它们的生命周期更长,更难于管理。长生命周期的变量可能会导致更多的内存占用,并可能影响到程序的性能。
编译器可能会将局部变量优化到寄存器中,而不是在内存中分配空间。寄存器访问速度通常比内存访问速度快。

#
不推荐写法。代码耗时:26.8秒 import math size = 10000 for x in range(size): for y in range(size): z = math.sqrt(x) + math.sqrt(y) # 推荐写法。代码耗时:20.6秒 import math def main(): # 定义到函数中,以减少全部变量使用 size = 10000 for x in range(size): for y in range(size): z = math.sqrt(x) + math.sqrt(y) main()

 

持续更新中。。。。。。。。。。。。。。