Python的运行速度比C和C 更快

How is python running faster than C and C++?

本文关键字:更快 速度 运行 Python      更新时间:2023-10-16

我制作了简单的程序,该程序只在屏幕上打印了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)))

程序花了5.204254150390625秒。

C代码:

#include<stdio.h>
int main()
{
    for( int i = 0 ; i < 1000000 ; ++i )
        printf("%dn", i);
}

花费的时间:8.582秒。

C 代码:

#include<iostream>
using namespace std;
int main()
{
    for( int i = 0 ; i < 1000000 ; ++i)
    cout<<i<<endl;
}

花费时间:8.778秒。

当我运行此时:

import time
start = time.time()
print(*range(1000000))
time_taken = time.time() - start
print(("Program took %s seconds." % (time_taken)))

程序花了60.77405118942261秒。

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时间来计时两个程序;当我这样做时,差异消失了。