在python中,如果我们让a = 2 * 4,那么“a”将是整数类型。 但是如果我们让a = 2 ** 400,那么“a”将自动为long类型,这是java的BigInteger对应物。
因此Python可以在必要时自动将整数转换为BigInteger。我的问题是:如果每次对整数执行算术运算,Python都会检查此操作是否导致溢出。如果溢出,将其转换为BigInteger。这不是很贵吗?因为这基本上意味着Python在每个整数算术指令之后插入溢出检查指令。 那么python如何自然地支持大整数并且效率高呢?
答案 0 :(得分:8)
这不是很贵吗?
当然,但这远远不是涉及的最昂贵的事情。我们还对所涉及的算术运算进行动态调度,并动态分配对象以保存结果等。
那么python如何自然地支持大整数并且效率高呢?
如果你的算法花费所有时间用Python整数进行Python级算术,那么就不会高效。它会像地狱一样慢。在这种情况下,您可能希望使用NumPy或C而不是Python整数算法。