gpt4 book ai didi

python - python 为什么比 C 和 C++ 运行得更快?

转载 作者:行者123 更新时间:2023-11-30 19:56:05 25 4
gpt4 key购买 nike

我制作了一个简单的程序,只在屏幕上打印 100 万个数字,Python 花费了大约 5.2 秒。我认为 C 和 C++ 应该做得更快,但每次我运行时两者都花费大约 8 秒。这些怎么比 python 慢?

Python 代码:

import time

start = time.time()

i = 0
while i < 1000000:
print(i)
i += 1

time_taken = time.time() - start
print(("Program took %s seconds." % (time_taken)))

Program took 5.204254150390625 seconds.

C 代码:

#include<stdio.h>

int main()
{
for( int i = 0 ; i < 1000000 ; ++i )
printf("%d\n", i);
}

Time taken: 8.582 seconds.

C++ 代码:

#include<iostream>

using namespace std;

int main()
{
for( int i = 0 ; i < 1000000 ; ++i)
cout<<i<<endl;
}

Time taken: 8.778 seconds.

当我运行这个时:

import time

start = time.time()

print(*range(1000000))

time_taken = time.time() - start
print(("Program took %s seconds." % (time_taken)))

Program took 60.77405118942261 seconds.

Python 的内置函数为什么比普通版本的程序运行得慢?

最佳答案

除了最后一种情况(见下文)之外,您在此测试中计时的基本上是您正在使用的控制台应用程序,而不是 C/C++/Python 程序本身。

If you redirect the output, you'll find a huge difference:

$ time ./loop >/dev/null

real 0m0.096s
user 0m0.092s
sys 0m0.004s

$ time ./loop >/tmp/million.txt
time ./loop >/tmp/million.txt

real 0m0.116s
user 0m0.078s
sys 0m0.019s

$ time ./loop
0
1
# ...Many lines of output not included
999998
999999

real 0m6.465s
user 0m0.202s
sys 0m0.708s

您的上一个 Python 示例如此缓慢的原因是您使用了 *range(1000000) 显式地将生成器展开为 print 的一百万个参数。这迫使 Python 创建巨大的列表,并且它没有针对特定情况进行优化。最好使用生成器来生成。

我怀疑最初的 Python 计时和 C 计时之间的差异是测试方法的人为因素。第一个使用Python来测量时间,这意味着它测量从程序启动到Python完成将数据发送到控制台的时间。但是,您可能使用了 time 命令来对 C 程序进行计时,这意味着您正在测量直到最后一行实际输出到控制台为止的时间。由于涉及较大的内核缓冲区,因此差异会相当大。尝试使用 time 为两个程序计时;当我这样做时,差异就消失了。

关于python - python 为什么比 C 和 C++ 运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42792558/

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