Python은 매우 다재다능한 프로그래밍 언어입니다. 파이썬은 라이브러리와 고수준 언어 덕분에 머신러닝 문제 해결에 가장 많이 사용되지만, 다른 언어에 비해 속도가 느린 것으로 알려져 있습니다. 이러한 평판 때문에 많은 사람들이 이 언어를 포기하고 프로그램 해결을 위해 C++와 같은 다른 옵션을 선택하기도 합니다.
1. 기본 속도 테스트
파이썬과 C++의 일반적인 속도 차이를 테스트하기 위해 소수 생성 알고리즘의 실행 시간을 테스트해 보겠습니다. 두 언어 모두에서 명확한 짧은 단계가 있는 간단한 알고리즘입니다.
2. 소수 생성 순서도

3. Python 실행
<code />
import math
from time import per_counter 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 Truedef run program(N):
for i in range(N):
is_prime(i)if __name__ == ‘__main__’:
N = 10000000
start = perf_counter()
run_program(N)
end = perf_counter()
print (end — start)
4. C++ 실행
<code />
#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;}
5. 결과
- Python: 80.137 초
- C++ : 3.174 초
예상대로 기본 테스트에서 C++는 Python보다 25배 더 빨랐습니다.
Python은 C++와 달리 동적 언어입니다.
GIL(Python Global Interpreter)은 병렬 프로그래밍을 허용하지 않습니다.
Numba를 사용하면 속도 문제를 해결할 수 있습니다.
6. Numba
Numba는 Python 및 NumPy 코드의 하위 집합을 빠른 머신 코드로 변환하는 오픈 소스 JIT 컴파일러입니다. ~ 위키백과
간단히 말해, Numba는 파이썬을 빠르게 만드는 라이브러리입니다. 사용하기 매우 쉬우며 코드 속도를 획기적으로 바꿔줍니다. Numba를 사용하려면 콘솔을 사용하여 설치하세요.
<code />
pip install numba
6.0.1. numba설치후 Python 실행
<code />
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)
결과
Python: 1.401 초
C++ : 3.174 초
파이썬이 C++보다 빠릅니다. 파이썬에서 알고리즘의 속도를 C++보다 빠르게 할 수 있습니다.
출처: https://medium.com/swlh/python-can-be-faster-than-c-2372c627068