用时间测试:
$bin/python -mtimeit -n10000000 -s = 1.345 int(n)
10000000 loops, best of 3: 0.234 usec per loop
$bin/python -mtimeit -n10000000 -s = 1.345 // 1
10000000 loops, best of 3: 0.218 usec per loop
所以地板部门只是一个较小的边缘.请注意,这些值非常接近,我不得不重新启动循环重复计数,以排除机器上的随机影响.即使有这么高的计数,你需要重复几次实验,看看数字还有多少,大多数时候出来的速度更快.
这是逻辑的,因为int()需要一个全局查找和一个函数调用(所以state被推和弹出):
>>> import dis
>>> def use_int(n):
... return int(n)
...
>>> def use_floordiv(n):
... return n // 1
...
>>> dis.dis(use_int)
2 0 LOAD_GLOBAL 0 (int)
3 LOAD_FAST 0 (n)
6 CALL_FUNCTION 1
9 RETURN_VALUE
>>> dis.dis(use_floordiv)
2 0 LOAD_FAST 0 (n)
3 LOAD_CONST 1 (1)
6 BINARY_FLOOR_DIVIDE
7 RETURN_VALUE
LOAD_GLOBAL和CALL_F