PyPy3와 Python3

taehoyoon·2023년 7월 10일
0

코딩테스트

목록 보기
5/11
post-thumbnail

같은 코드를 Python3 언어로 제출했을 때는 시간 초과가 나왔지만, PyPy3로 제출하니 정답이 나왔다..

도대체 왜..?


Python3

우리가 흔히 알고 있는 인터프리터 언어인 파이썬이 공식적으로 사용하는 C언어로 구현된 인터프리터

C언어로 구현되었기 때문에 CPython이라고 불린다.
공식 인터프리터이기 때문에 모든 Python 코드와 라이브러리를 실행할 수 있다.

PyPy3

Just-In-Time(JIT) 컴파일러를 사용하는 전통적인 인터프리터와는 다른 작동 방식을 가진 인터프리터

JIT 컴파일러는 코드에서 자주 실행되는 핫스팟을 식별하고, 이들을 기계 코드로 컴파일하여 실행 속도를 높인다.
이를 통해 PyPy는 CPython보다 훨씬 빠른 실행 속도를 보여준다.
하지만, 일부 C로 작성된 확장 모듈을 사용하는 패키지와는 호환성이 떨어질 수 있다.


라고 한다..
PyPy3가 컴파일 방식을 일부 사용하지만, 파이썬을 컴파일 언어처럼 사용하는 건 또 아니라고 한다.

그렇다면 언제 Python3를 사용하는 게 좋고, 언제 PyPy3를 사용하는 게 좋을까??

PyPy3가 더 빠른 경우

1. 많은 양의 순수 파이썬 코드가 있을 때

  • PyPy의 JIT 컴파일러는 순수 파이썬 코드를 기계 코드로 컴파일하여 실행 속도를 높이므로, 대량의 순수 파이썬 코드를 실행하는 경우 PyPy를 사용하는 것이 더 빠를 수 있다.

2. 반복적인 작업이 많이 필요한 경우

  • PyPy는 반복적인 작업이나 장기 실행 프로세스에 대해 뛰어난 성능을 보인다.
  • 특히, 자주 호출되는 함수나 루프 내부의 코드는 JIT 컴파일의 대상이 되어 성능이 크게 향상될 수 있다.
  • 재귀함수반복문이 많은 경우에 유리하다고 한다.

CPython이 유리한 경우

1. C 확장 모듈을 많이 사용하는 경우

  • 많은 파이썬 라이브러리들은 성능 향상을 위해 C로 작성된 확장 모듈을 사용한다.
  • CPython은 이러한 C 확장 모듈과 매우 잘 호환되지만, PyPy에서는 C 확장 모듈의 성능이 항상 보장되지 않는다.
  • 예: Numpy, Pandas, Pillow 등 (코테에서 자주 쓰는 건 없는 듯 하다)

2. 짧은 스크립트나 빠른 시작이 필요한 경우

  • PyPy의 JIT 컴파일러는 코드를 분석하고 최적화하는 데 약간의 시간이 필요하므로, 짧은 스크립트나 빠른 시작이 요구되는 상황에서는 CPython이 더 효율적일 수 있다.

웬만한 상황에서는 PyPy3가 빠를 수 있다고는 하는데,, 솔직히 공식 인터프리터보단 못 미더운 게 사실이다

시간초과날 때만 써야겠다

profile
어흥🦁

0개의 댓글