阅读 171

在Python中求次方最佳的姿势

在Python可以使用两个方式求次方,双星号和math.pow() 我们下面可以使用代码进行测试,这里测试的是5的6次幂

import math
import time
import matplotlib.pyplot  as plt

ls=[(i+1)*10000 for i in range(1000)]
print('start **')
res_x=[]
for i in ls[:]:
    start = time.time()
    for j in range(i):
        5 ** 6
    print('** spend time is {}'.format(time.time() - start))
    res_x.append(time.time() - start)
print('start math.pow')
res_y=[]
for i in ls[:]:
    start = time.time()
    for j in range(i):
        math.pow(5,6)
    print('math.pow spend time is {}'.format(time.time() - start))
    res_y.append(time.time() - start)

plt.plot(ls[:],res_x,"ob-",label="**")
plt.legend()
plt.xlabel("x")
plt.ylabel(" spend time(s)")
plt.plot(ls[:],res_y,"or-",label="math.pow")
plt.legend()
plt.xlabel("x")
plt.ylabel("spend time(s)")
plt.show()复制代码

运行的结果如下:

image.png

我们可以看到,math实际上在调用十分频繁后,速度比双星号差很多倍,越频繁差距越大,而双星号随着频繁调用的增加变化不大

我们知道,次方的计算不仅仅和调用次数有关,还是多少次幂有一定的关系,接下来我们就实验一下:

import math
import time
import matplotlib.pyplot  as plt



ls=[(i+1)*10000 for i in range(1000)]
print('start **')
res_x=[]

for i in ls[:]:
    start = time.time()
    5**i
    print('** spend time is {}'.format(time.time() - start))
    res_x.append(time.time() - start)
# print('start math.pow')
# res_y=[]
# for i in ls[:]:
#     start = time.time()
#     math.pow(5,i)
#     print('math.pow spend time is {}'.format(time.time() - start))
#     res_y.append(time.time() - start)

plt.plot(ls[:],res_x,"ob-",label="**")
plt.legend()
plt.xlabel("x")
plt.ylabel(" spend time(s)")
# plt.plot(ls[:],res_y,"or-",label="math.pow")
# plt.legend()
# plt.xlabel("x")
# plt.ylabel("spend time(s)")
plt.show()复制代码

结果如下:image.png

可以从上图发现,次数增加运算时间会增加很多,比起调用次数来说,也是呈现递增的趋势。 而且发现math.pow在次数稍微大一些就会报错:math.pow(5,i) OverflowError: math range error所以综合来说,math.pow的实用性不如双*,而且就算是双*的幂次也不要过大,特别影响效率


作者:不喝AD钙就抽经
链接:https://juejin.cn/post/7028805318855360520

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐