时间比它应该更快

时间:2017-12-22 00:04:06

标签: python python-3.x

我正在使用timeit进行测试,但我不了解发生了什么。我一直在评估2提升到一个功率,但每次它说它需要0.02±0.01秒。我做错了什么?

示例:

这需要2.5分钟才能执行:

2**10000000

这会立即返回0.01637562597170472:

timeit.Timer(stmt="2**10000000").timeit()

2 个答案:

答案 0 :(得分:3)

2**10000000

这不需要2.5分钟才能执行。转换为十进制字符串需要2.5分钟,这是默认情况下打印整数的方式。试试(2**10000000) % 10000000len(hex(2**10000000))

答案 1 :(得分:-1)

@Ryan的额外补充,如果您尝试a = 2 ** 10000000,它将立即返回。但是如果你尝试print(a),那么执行需要很长时间。

正如@Ryan所说,这个长时间是转换为十进制字符串的成本。由于timeit.Timer(stmt="2**10000000").timeit()不会打印任何内容,它也会立即返回。