gpt4 book ai didi

python - Numpy 比纯 C 更快?

转载 作者:行者123 更新时间:2023-11-30 21:46:06 27 4
gpt4 key购买 nike

我有以下 C 代码。在我的机器上,我的计时时间约为 13 秒。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void) {
clock_t begin = clock();

double d = 0;

for (int i = 0; i < 1e9; i++) {
d = 1 + rand() * 5 > 10 ? 4 : rand();
}

clock_t end = clock();
double time_spent = (double) (end - begin) / CLOCKS_PER_SEC;

printf("%f", time_spent);
return EXIT_SUCCESS;
}

但是这个 numpy 操作,我的计时时间只有几分之一秒!

a = np.random.randn(1000, 1000)
b = np.random.randn(1000, 1000)
c = a.dot(b)

鉴于他们正在执行相同数量(1e9 次操作)的工作,这怎么可能? numpy 是并行化吗?

最佳答案

你的程序没有做同样的事情。您的C程序调用rand 至少 10^9次。另外,你的随机性也有条件。

numpy创建 2 1000x1000数组是 2x10^6仅有的。对随机值没有条件。然后点积加上 O(n^3)操作(以及数组创建)但非常优化。

所以你基本上是在比较顺序 rand来电C少得多 randn调用加上 python 中的优化操作( dot )。

为了获得有效的基准测试,您应该有 2 个执行完全相同操作的程序。

关于python - Numpy 比纯 C 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53513944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com