进行一些优化后,我注意到从 float64 切换到 float32 可以通过一些 numpy 操作大大提高运行时间。在下面的示例中为 5 倍。我知道数据类型只是处理方式不同并且具有硬件依赖性等(请参阅此处和此处的问题)。但为什么我会看到以下内容,我能做些什么来使 64 位速度更快吗?
import numpy as np
import timeit
arr64 = np.random.random(size=10000).astype(np.float64)
arr32 = np.random.random(size=10000).astype(np.float32)
time64 = timeit.timeit(lambda :np.exp(arr64), number=10000)
time32 = timeit.timeit(lambda :np.exp(arr32), number=10000)
print(f'64bit time: {time64}')
print(f'32bit time: {time32}')
64bit time: 0.797928056679666
32bit time: 0.15939769614487886
Run Code Online (Sandbox Code Playgroud)
注意我在 Ubuntu 上使用 python 3.9.17 和 numpy 1.25.2