众所周知,Python不是具有高执行效率的语言。此外,周期是非常耗时的操作。如果任何简单的单步操作都采用一个单元,则该操作将重复执行数万次,最后一次将增加数万次。
而其中的两个关键字可以在Python中实现周期。他们的运行效率实际上是一个差距。例如,下面的测试代码:
这是一个简单的搜索和操作,可以计算出1和n之间的所有自然数的总和。可以看出,for循环比时期快1.5秒。
差距主要是由于两者的不同机制。
在每个周期中,虽然实际执行两个步骤比以下方 < n)和自增计算(i +=1)。这两步操作都是显式的纯 Python 代码。
for 循环不需要执行边界检查和自增操作,没有增加显式的 Python 代码(纯 Python 代码效率低于底层的 C 代码)。当循环的次数足够多,就出现了明显的效率差距。
可以再增加两个函数,在 for 循环中加上不必要的边界检查和自增计算:
可以看出,增加的边界检查和自增操作确实大大影响了 for 循环的执行效率。
前面提到过,Python 底层的解释器和内置函数是用 C 语言实现的。而 C 语言的执行效率远大于 Python。
对于上面的求等差数列之和的操作,借助于 Python 内置的 sum 函数,可以获得远大于 for 或 while 循环的执行效率。
可以看到,使用内置函数 sum 替代循环之后,代码的执行效率实现了成倍的增长。
内置函数 sum 的累加操作实际上也是一种循环,但它由 C 语言实现,而 for 循环中的求和操作是由纯 Python 代码 s += i 实现的。C > Python。
再次扩展思维。当我还是个孩子时,我听到了1至100童年的高斯和谐的故事。1…100的总和等于(1 + 100) * 50。此计算方法也可以应用于上面的搜索和操作。
最后,数学总和的执行时间约为2.4e-6,缩短了数百万美元。这里的想法是,由于周期效率很低,因此必须执行数亿次代码。
不要直接循环。通过数学公式,它将数亿个周期操作变成了操作的一步。效率自然是空前加强的。
最后的结论(有点谜):
实现周期的最快方法----不需要循环
对于Python,最大程度地使用了构建功能,以最大程度地减少循环中的纯Python代码。
以上是该共享的所有内容。如果您想了解更多信息,请转到公共帐户:Python编程学习圈,每日干货共享
原始:https://juejin.cn/post/7096684800521535525
