代码跑得慢甩锅Python?手把手教你如何给代码提速30%
Python已经得到了全球程序员的喜爱,但是还是遭到一些人的诟病,原因之一就是认为它运行缓慢。
其实某个特定程序(无论使用何种编程语言)的运行速度是快还是慢,在很大程度上取决于编写该程序的开发人员自身素质,以及他们编写优化而高效代码的能力。
Medium上一位小哥就详细讲了讲如何让python提速30%,以此证明代码跑得慢不是python的问题,而是代码本身的问题。
时序分析
在开始进行任何优化之前,我们首先需要找出代码的哪些部分使整个程序变慢。有时程序的问题很明显,但是如果你一时不知道问题出在哪里,那么这里有一些可能的选项:
注意:这是我将用于演示的程序,它将进行指数计算(取自Python文档):
# slow_program.py
from decimal import *
def exp(x):
getcontext().prec += 2
i, lasts, s, fact, num = 0, 0, 1, 1, 1
while s != lasts:
lasts = s
i += 1
fact *= i
num *= x
s += num / fact
getcontext().prec -= 2
return +s
exp(Decimal(150))
exp(Decimal(400))
exp(Decimal(3000))
最简约的“配置文件”
首先,最简单最偷懒的方法——Unix时间命令。
~ $ time python3.8 slow_program.py
real 0m11,058s
user 0m11,050s
sys 0m0,008s
如果你只能直到整个程序的运行时间,这样就够了,但通常这还远远不够。
查看更多内容请戳链接 # https://t.cn/A6vrLK6d
Python已经得到了全球程序员的喜爱,但是还是遭到一些人的诟病,原因之一就是认为它运行缓慢。
其实某个特定程序(无论使用何种编程语言)的运行速度是快还是慢,在很大程度上取决于编写该程序的开发人员自身素质,以及他们编写优化而高效代码的能力。
Medium上一位小哥就详细讲了讲如何让python提速30%,以此证明代码跑得慢不是python的问题,而是代码本身的问题。
时序分析
在开始进行任何优化之前,我们首先需要找出代码的哪些部分使整个程序变慢。有时程序的问题很明显,但是如果你一时不知道问题出在哪里,那么这里有一些可能的选项:
注意:这是我将用于演示的程序,它将进行指数计算(取自Python文档):
# slow_program.py
from decimal import *
def exp(x):
getcontext().prec += 2
i, lasts, s, fact, num = 0, 0, 1, 1, 1
while s != lasts:
lasts = s
i += 1
fact *= i
num *= x
s += num / fact
getcontext().prec -= 2
return +s
exp(Decimal(150))
exp(Decimal(400))
exp(Decimal(3000))
最简约的“配置文件”
首先,最简单最偷懒的方法——Unix时间命令。
~ $ time python3.8 slow_program.py
real 0m11,058s
user 0m11,050s
sys 0m0,008s
如果你只能直到整个程序的运行时间,这样就够了,但通常这还远远不够。
查看更多内容请戳链接 # https://t.cn/A6vrLK6d
T. S. Eliot 1920年出版的诗集《Ara Vos Prec》(我请求你),
诗集名来自但丁《神曲 净罪篇》第26歌(Dante, Purgatorio, XXVI, 145-148):
Ara vos prec per aquella valor
que vos guida al som de l'escalina,
sovegna vos a temps de ma dolor.
Poi s'ascose nel foco che gli affina.
因此我请求你,凭着那
将你引导至阶梯至高处的力量,
请你在适当的时候,记念我的痛苦。
然后他又隐身于净罪的火中。
诗集名来自但丁《神曲 净罪篇》第26歌(Dante, Purgatorio, XXVI, 145-148):
Ara vos prec per aquella valor
que vos guida al som de l'escalina,
sovegna vos a temps de ma dolor.
Poi s'ascose nel foco che gli affina.
因此我请求你,凭着那
将你引导至阶梯至高处的力量,
请你在适当的时候,记念我的痛苦。
然后他又隐身于净罪的火中。
T. S. Eliot 1920年出版的诗集《Ara Vos Prec》(我请求你),
诗集名来自但丁《神曲 净罪篇》第26歌(Dante, Purgatorio, XXVI, 145-148):
Ara vos prec per aquella valor
que vos guida al som de l'escalina,
sovegna vos a temps de ma dolor.
Poi s'ascose nel foco che gli affina.
因此我请求你,凭着那
将你引导至阶梯至高处的力量,
请你在适当的时候,记念我的痛苦。
然后他又隐身于净罪的火中。
诗集名来自但丁《神曲 净罪篇》第26歌(Dante, Purgatorio, XXVI, 145-148):
Ara vos prec per aquella valor
que vos guida al som de l'escalina,
sovegna vos a temps de ma dolor.
Poi s'ascose nel foco che gli affina.
因此我请求你,凭着那
将你引导至阶梯至高处的力量,
请你在适当的时候,记念我的痛苦。
然后他又隐身于净罪的火中。
✋热门推荐