Python 和 C++ 程序之间的不寻常速度差异

unusual speed difference between python and c++ programs

本文关键字:不寻常 速度 之间 C++ 程序 Python      更新时间:2023-10-16

我用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 中这样做。