我正在使用 Windows7,将 CPython 用于 python3.22,将 MinGW 的 g++.exe 用于 C++(这意味着我使用 libstdc++ 作为运行时库)。我写了两个简单的程序来比较它们的速度。
Python:
x=0
while x!=1000000:
x+=1
print(x)
C++:
#include <iostream>
int main()
{
int x = 0;
while ( x != 1000000 )
{
x++;
std::cout << x << std::endl;
}
return 0;
}
两者都没有优化。
我先运行c++,然后通过交互式命令行运行python,这比直接启动.py文件要慢得多。
然而,python 超过了 c++ 并且速度超过了两倍。 Python 用了 53 秒,c++ 用了 1 分 54 秒。
是因为 python 对解释器做了一些特殊的优化,还是因为 C++ 必须引用和 std ,这会减慢它的速度并使其占用内存?
或者是其他什么原因?
编辑: 我再次尝试,使用 \n
而不是 std::endl
,并使用 -O3
标志进行编译,这一次花了 1 分钟到达 0000。
原文由 busukxuan 发布,翻译遵循 CC BY-SA 4.0 许可协议
这里没有什么明显的。由于 Python 是用 C 编写的,它必须使用类似
printf
的东西来实现print
。 C++ I/O 流,如cout
,通常以比printf
慢得多的方式实现。如果你想让 C++ 有更好的立足点,你可以尝试更改为:我确实改为使用
++x
而不是x++
。多年前人们认为这是一个值得的“优化”。如果该更改对您的程序性能产生任何影响,我会心脏病发作(OTOH,我很肯定使用std::printf
将对运行时性能产生巨大影响)。相反,我进行更改只是因为您没有注意x
在您增加它之前的值,所以我认为在代码中这样说很有用。