【发布时间】:2018-03-21 23:27:27
【问题描述】:
在编写仅使用整数算术的算法时,我注意到 Python 没有利用它。
于是我尝试了下面的代码,看看“显式”声明的效果
import time
repeat = 1000000
start = time.time()
x = 0
for i in range(repeat):
x += 1
no_type_time = time.time() - start
start = time.time()
y = int(0)
for i in range(repeat):
y += 1
int_time = time.time() - start
print('{} - No type'.format(no_type_time))
print('{} - Int'.format(int_time))
代码输出如下:
0.0692429542542 - No type
0.0545210838318 - Int
我认为这与 Python 作为一种动态类型语言有关。但是当我尝试找出变量的类型时,使用 type(x) 和 type(y) 都输出 int。这很奇怪,因为我还使用 x = float(0) 进行了一些测试,结果非常接近没有类型“声明”的结果。
我想知道为什么会这样,如果可能的话,我想从解释它的 Python 文档中获得一些参考。
【问题讨论】:
-
这根本不是计时执行的方法。您应该查看
timeit等。在执行期间您的系统上可能发生了任何影响资源的事情。 -
Python 2 还是 Python 3?这听起来与显式调用
int没有任何关系;这听起来像是你在看一个混杂因素,比如 Python 2 上range(repeat)中涉及的分配。
标签: python performance typing dynamic-typing