Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)이 다른 언어보다 느린 이유는 무엇일까?

파이썬(Python)은 스크립트 언어이고, C는 컴파일 기반의 프로그래밍 언어입니다. C/C++가 파이썬에 비해 상대적으로 빠른 이유는, 파이썬 스크립트를 실행할 때 인터프리터가 코드를 한 줄씩 해석하면서 결과를 생성하는 반면, C는 컴파일러가 먼저 코드 전체를 컴파일하여 하드웨어에 최적화된 출력물을 만들어내기 때문입니다.

Java나 .NET과 같은 언어의 경우도 마찬가지입니다. JIT(Just-In-Time) 컴파일러가 런타임에 바이트코드를 네이티브 코드로 변환해 주기 때문에 자바 바이트코드와 .NET 바이트코드는 파이썬보다 빠르게 실행됩니다. 반면 CPython에는 JIT 컴파일러를 적용하기 어려운데, 그 원인은 파이썬의 동적인 특성 때문에 JIT 컴파일러를 작성하기가 까다롭기 때문입니다.

인터프리터 언어와 컴파일 언어의 차이

파이썬은 인터프리터 언어이고, C는 컴파일 언어라는 점을 기억해 두면 좋습니다. 인터프리터 방식으로 실행되는 코드는 직접 실행되는 기계어 코드보다 항상 느립니다. 해석된 명령 하나를 실제로 수행하려면 실제 기계 명령 하나를 실행할 때보다 훨씬 더 많은 명령이 필요하기 때문입니다.

파이썬 프로그램이 실제 작업을 수행하기 전에 CPU는 파이썬 명령어를 먼저 이해해야 합니다. 이를 위해 파이썬 인터프리터는 변수 저장을 위한 메모리 할당, 공백과 주석 제거 등 프로그램 내 각 문장을 파이썬 언어의 규칙에 따라 하나하나 검사합니다. 이 과정은 프로그램의 모든 줄마다 반복되며, 그만큼 프로그램 실행에 상당한 오버헤드를 더하게 됩니다.

C는 왜 빠른가?

반면 C는 소스 코드를 다시 검사하는 데 시간을 거의 쓰지 않고 신속하게 CPU 명령으로 변환합니다. 실행 전에 별도의 컴파일러가 사람이 작성한 프로그램을 CPU 명령어로 변환하고, 오류를 검사하며, 메모리와 변수를 할당하고, 주석과 공백을 제거한 뒤 결과 명령어를 최적화합니다.

컴파일된 코드는 미리 만들어진 다른 코드들과 링크되어, 별도의 사전 준비 과정 없이 주어진 작업을 바로 수행할 수 있는 견고한 CPU 명령어 집합을 결과물로 얻게 됩니다. 결국 파이썬 코드가 더 느리게 실행되는 내부적인 이유는, 코드가 컴파일 시점에 네이티브 코드로 변환되는 것이 아니라 런타임에 해석되기 때문입니다.