Python代码比相同的C++代码慢得多
Python Code is Way Slower Than The Same C++ Code?
以下是我对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
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值