Python 和 C++ 程序之间的不寻常速度差异
unusual speed difference between python and c++ programs
我用C++和Python编写了相同的程序。在 Python 中,它需要不寻常的时间(实际上我没有得到答案)。谁能解释为什么会这样?
C++代码:
#include<iostream>
using namespace std;
int main(){
int n = 1000000;
int *solutions = new int[n];
for (int i = 1; i <= n; i++){
solutions[i] = 0;
}
for (int v = 1; v <= n; v++){
for (int u = 1; u*v <= n; u++){
if ((3 * v>u) & (((u + v) % 4) == 0) & (((3 * v - u) % 4) == 0)){
solutions[u*v]++;
}
}
}
int count = 0;
for (int i = 1; i < n; i++){
if ((solutions[i])==10)
count += 1;
}
cout << count;
}
蟒蛇代码:
n=1000000
l=[0 for x in range(n+1)]
for u in range(1,n+1):
v=1
while u*v<n+1:
if (((u+v)%4)==0) and (((3*v-u)%4)==0) and (3*v>u):
l[u*v]+=1
v+=1
l.count(10)
您可以尝试优化此循环,例如使其成为一个没有ifs的块,或者使用C中的模块。C++编译器可以进行 Python 运行时无法做到的优化,因此使用纯解释器,您将永远不会获得接近的性能。1M 交互很多,我不会从该范围内的任何解释器开始,你最好在浏览器和 JavaScript 中这样做。
相关文章:
- C++模板选择 - 不寻常的情况
- C 结构具有CHAR数组以不寻常的方式初始化为零
- 以不寻常的方式创建指针
- Box2D不寻常的错误.为什么 0阻止错误
- 布尔表达的不寻常使用
- 未定义的参考C ,不寻常的情况
- C++可变参数模板不寻常的例子
- Python 和 C++ 程序之间的不寻常速度差异
- C++中不寻常的iostream事件
- C++如何替换代码中不寻常的引号
- 连接(以一种不寻常的方式)信号到插槽
- TaskDialogIndirect返回一个不寻常的错误代码
- 将 istream 中的字符回显到不寻常的"device"
- 如何根据不寻常数字的数量对数组进行排序
- 微控制器显示驱动程序需要在C或c++中进行不寻常的字符串连接
- 这段c++代码是如何处理不寻常的单个布尔语句的?
- c++中不寻常的FOR语句形式
- 为什么printf()在递归函数中显示不寻常的行为
- c++中不寻常的类型定义
- 一个相当不寻常的野牛错误