Python代码比相同的C++代码慢得多

Python Code is Way Slower Than The Same C++ Code?

本文关键字:代码 C++ Python      更新时间:2023-10-16

以下是我对Project Euler第三个问题的回答。以下是python实现:

def isPrime(n):
    for i in range(n/2)[3::2]:
        if n % i == 0:
            return False
    return True
def largestPrime(n):
    for i in range(3, n/2):
        if n % i == 0 and isPrime(n/i):
            return n/i
    return -1
largestPrime(600851475143)

下面是用C++重写的相同实现:

#include <iostream>
using namespace std;
bool isPrime(long n)
{
    for(int i = 3; i < n/2; i+=2)
    {
        if(n % i == 0)
            return false;
    }
    return true;
}
long largestPrime(long n)
{
    for(int i = 2; i < n/2; i++)
    {
        if(n % i == 0 and isPrime(n/i))
            return n/i;
    }
    return -1;
}
int main()
{
    cout << largestPrime(600851475143) << endl;
    return 0;
}

当我运行C++代码时,它会在几秒钟内计算出正确的答案(6857)。但当我运行python代码时,它似乎永远都在继续。为什么python的性能这么差?

A)解释Python,编译C。后者几乎总是比前者快。

B) isPrime被执行多次。其中有range(n/2)[3::2],它将多次构造(一个相当大的)数组。相反,C代码只有一个简单的循环,没有内存分配和初始化。

C) Tony D的提问很可能有可取之处。检查您的long尺寸。

这是因为Python是一种解释语言,而C++是一种编译语言。

请参阅此堆栈溢出问题,以更深入地描述两者之间的差异。注意,这触及了它的表面。

编译语言与解释语言

另请参阅Python网站上的此页面,了解与其他编程语言相比Python的简要描述。

https://www.python.org/doc/essays/comparisons/

Python是一种解释语言,正如前面提到的,但另一个缺点是您很可能通过IDLE或IDLE3等IDE运行它。这些是用Python制作的,比编译语言(如C++)占用更多的cpu使用量。我希望这对你有任何帮助。~ Th3T3ch13