【发布时间】:2012-03-30 02:32:43
【问题描述】:
我正在使用 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分钟达到500,000。
【问题讨论】:
-
所以根据您的基准,Python 中的无限循环运行速度是在 C++ 中打印单个数字的两倍?这确实很奇怪。
-
啊,这些代码示例做了完全不同的事情......第一个甚至没有终止。
-
@Mooing Duck:我同意,如果 OP 将示例更改为实际等效,则应该重新打开它。我也认为这可以通过在 C++ 示例中使用
\n而不是std::endl来解决。 -
@busukxuan:您能知道请将所有这些额外信息编辑到问题中吗?也许它会重新开放。您应该添加的内容:C++ 编译器、架构、操作系统、Python 实现/版本,尤其是实际终止的代码!把这个问题变成一个有趣的问题,人们就会烦恼。另外,正确格式化 C++ 代码。