我正在使用timeit进行测试,但我不了解发生了什么。我一直在评估2提升到一个功率,但每次它说它需要0.02±0.01秒。我做错了什么?
示例:
这需要2.5分钟才能执行:
2**10000000
这会立即返回0.01637562597170472:
timeit.Timer(stmt="2**10000000").timeit()
答案 0 :(得分:3)
2**10000000
这不需要2.5分钟才能执行。转换为十进制字符串需要2.5分钟,这是默认情况下打印整数的方式。试试(2**10000000) % 10000000
或len(hex(2**10000000))
。
答案 1 :(得分:-1)
@Ryan的额外补充,如果您尝试a = 2 ** 10000000
,它将立即返回。但是如果你尝试print(a)
,那么执行需要很长时间。
正如@Ryan所说,这个长时间是转换为十进制字符串的成本。由于timeit.Timer(stmt="2**10000000").timeit()
不会打印任何内容,它也会立即返回。