为什么Python计算浮点数比计算整数快

问题描述 投票:0回答:2

这个例子表明 python 计算浮点数比整数更快。我想知道为什么使用整数进行计算并不比使用浮点数更快

import time
# Number of operations
N = 10**7

# Integer addition
start_time = time.time()
int_result = 0
for i in range(N):
    int_result += 1
int_time = time.time() - start_time

# Float addition
start_time = time.time()
float_result = 0.0
for i in range(N):
    float_result += 1.0
float_time = time.time() - start_time

print(f"Time taken for integer addition: {int_time:.6f} seconds")
print(f"Time taken for float addition: {float_time:.6f} seconds")
python performance
2个回答
0
投票

float
是硬件提供的任何浮点类型的薄包装。
int
不是;它是一种基于大“数字”数组的任意精度类型。 “小”整数仍然是机器字的单元素数组,而不是单个机器字本身。对这些值的运算必然比单个机器整数运算慢。


0
投票

Python 使用没有固定大小的整数。在底层,它是一个数字数组(不是以 10 为基数的数字,而是适合 1 个数组元素的固定大小整数,在本例中我们将其称为“数字”),可以根据需要进行扩展。这就是为什么你可以在 Python 中使用大得离谱的整数。

CPU 具有执行浮点运算和整数运算的指令,但它们通常只处理 1 个机器字长或更少的数字。 Python 整数不满足这个条件,但浮点数可以。

无需过多深入研究长数算术,Python 中的整数运算是逐位计算的。整数越长,计算所需的时间就越长。

但是,在您的代码中,整数不使用超过 1 位数字。尽管如此,这些都是数组,需要一些开销来处理。

© www.soinside.com 2019 - 2024. All rights reserved.