Python Can Be Faster Than C++ -번역

Python은 C ++보다 빠를 수 있습니다.

파이썬을 상상할 수있는 것보다 더 빠르게 만드는 트릭

Image for post

Photo by Jake Givens on Unsplash

Python은 다재다능한 프로그래밍 언어입니다.파이썬은 라이브러리와 높은 수준의 언어로 인해 기계 학습 문제 해결에 가장 많이 사용되지만 다른 많은 언어보다 느린 것으로 알려져 있습니다.그 명성 때문에 많은 사람들이 언어를 버리고 프로그램 해결을 위해 C ++와 같은 다른 옵션을 고수하기로 결정했습니다.

이 기사에서는 파이썬이 C ++보다 얼마나 빠른지 보여줄 것입니다.

기본 속도 테스트

Python과 C ++의 정상적인 속도 차이를 테스트하기 위해소수의 생성연산.두 언어 모두에서 명확한 짧은 단계가있는 간단한 알고리즘입니다.

수입 수학
카운터 당 시간 가져 오기에서
def is_prime (num) :
만약 num == 2 :
반환 True;
num & lt; = 1이거나 num % 2가 아닌 경우 :
False를 반환
range (3, int (math.sqrt (num) +1), 2)의 div의 경우 :
num % div가 아닌 경우 :
False를 반환
True 반환
def 실행 프로그램 (N) :
i 범위 (N) :
is_prime (i)
__name__ ==‘__main__’인 경우 :
N = 10000000
시작 = perf_counter ()
프로그램 실행 (N)
끝 = perf_counter ()
인쇄 (끝-시작)
#include <iostream>
#include <cmath>
#include <time.h>
using namespace std;bool isPrime(int num)
{
if (num == 2) return true;
if (num <= 1 || num % 2 == 0) return false;
double sqrt_num = sqrt(double(num));
for (int div = 3; div <= sqrt_num; div +=2){
if (num % div == 0) return false;
}
return true;
}int main()
{
int N = 10000000;
clock_t start,end;
start = clock();
for (int i; i < N; i++) isPrime(i);
end = clock();
cout << (end — start) / ((double) CLOCKS_PER_SEC);
return 0;
}
  • Python: 80.137 seconds
  • C++ : 3.174 seconds

예상대로 C ++은 기본 테스트에서 Python보다 25 배 더 빠릅니다.따라서 평판은 사실이며 이것은 논리적입니다.

  • Python은 C ++와 달리 동적 언어입니다.
  • GIL (Python Global Interpreter)은 병렬 프로그래밍을 허용하지 않습니다.

이 속도 차이는 파이썬이 유연한 다목적 언어로 만들어 졌기 때문에 수정할 수 있습니다.속도 문제에 대한 최고의 솔루션 중 하나는Numba.

Numba

Numba는 Python 및 NumPy 코드의 하위 집합을 빠른 기계 코드로 변환하는 오픈 소스 JIT 컴파일러입니다.~위키 백과

간단히 말해서 Numba는 Python을 빠르게 만드는 라이브러리입니다.사용하기 매우 쉽고 코드 속도를 크게 변경합니다.Numba 사용을 시작하려면 콘솔 사용을 사용하여 설치하십시오.

pip 설치 numba

Python Implementation After Using Numba

import math
from time import per_counter
from numba import njit, prange
@njit(fastmath=True, cache=True)
def is_prime(num):
if num == 2:
return True;
if num <= 1 or not num % 2:
return False
for div in range(3,int(math.sqrt(num)+1),2):
if not num % div:
return False
return True
@njit(fastmath=True, cache=True,parallel=True)
def run program(N):
for i in prange(N):
is_prime(i)
if __name__ == ‘__main__’:
N = 10000000
start = perf_counter()
run_program(N)
end = perf_counter()
print (end — start)

결과

파이썬: 1.401 초
C ++: 3.174 초

따라서 Python은 C ++보다 빠릅니다.따라서 Python에서 알고리즘의 속도를 C ++보다 빠르게 할 수 있습니다.

Leave a Comment