Python3 과 PyPy3의 차이

My_Code·2023년 8월 22일
0
post-thumbnail

백준에서 Python를 사용해서 문제를 풀고 제출할 때 Python3와 PyPy3 중 하나를 선택하여 제출하게 된다. 그럼 Python3 와 PyPy3의 차이가 뭘까?

둘의 차이를 알아보기 전에 우선 컴파일 언어와 인터프리터 언어가 무엇인지 정확하게 알아야 한다.

📌 컴파일 언어란?

컴파일 언어는 내가 작성한 소스코드 전체를 컴퓨터가 이해할 수 있는 기계어로 번역한 후 한번에 실행하는 방식이다.
즉, 번역과 실행이 따로 이루어 지는 방식을 의미한다.
대표적으로는 C언어, C++, Go 등이 있다.

  • 특징
    - 코드를 한번에 컴파일 하다보니 컴파일 과정이 오래 걸릴 수 있다.
    - 하지만 이미 컴파일 되어 있다면 매우 빠르게 실행이 가능하다.
    - OS마다 이해할 수 있는 기계어가 다를 수 있기에 운영체제 이식성이 낮다.


📌 인터프리터 언어란?

인터프리터 언어는 소스코드 한 줄씩 번역과 실행이 동시에 진행된다.
번역은 인터프리터로 이루어진다.
대표적으로는 Python, R, JavaScript 등이 있다.

  • 특징
    - 한 줄씩 번역과 실행이 이루어지기 때문에 실행이 느린편이다.
    - 한 줄씩 진행될 때 오류를 발견하면 해당 코드 밑으로는 번역 및 실행이 진행되지 않기 때문에 디버깅이 쉽다.
    - OS에 맞는 인터프리터만 준비되면 바로 실행 가능하기에 운영체제 이식성이 높다.

그 밖에 우리가 많이 사용하는 언어인 Java는 처음에는 인터프리터 언어로써 사용되다가, 성능 향상을 위해 컴파일 언어의 장점을 가져온 경우로 하이브리드 언어라고도 한다.


📌 Python3

Python3는 Python과 C로 구성된 언어로 구현체가 CPython이다. 즉 Python3는 인터프리터 언어이면서 컴파일 언어이다.


📌 PyPy3

PyPy3는 Python3와 같은 문법을 사용하지만 JIT(Just In Time) 컴파일 방식을 도입한 것이다. JIT 컴파일 방식은 프로그램 실행 전에 컴파일하는 대신에 프로그램을 실행할 때 필요한 부분에서 바로 컴파일 하는 방식이다.
자주 쓰이는 코드를 캐싱하는 기능이 있기에 인터프리터 언어의 느린 실행 속도를 개선할 수 있다.

결과적으로 간단한 코드상에서는 Python3가 메모리, 속도 측면에서 우세하고
반복문 등의 복잡한 코드들을 사용하는 경우에는 PyPy3가 우세하다.

※ 그렇기에 코드의 상황에 따라 두 구현체(Python3, PyPy3)를 적절하게 사용하는게 가장 효율적이라고 말할 수 있다.

profile
조금씩 정리하자!!!

0개의 댓글