2013-07-18 1 views
1

나는 잠시 동안 주위를 둘러 보았고 CPython의 컴파일이 파이썬 코드의 더 빠른 실행을 허용한다는 많은 합리적인 주장을 발견했다. 속도 향상의 정도를 보여주는 벤치 마크를 아는 사람이라면 궁금합니다.바이트 코드 컴파일이 파이썬 코드를 얼마나 빠르게 처리합니까?

아니면 벤치 마크하기 쉬운 방법이 있습니다. 컴파일 할 때 런타임에 제공 할 수있는 Python 플래그가 있습니까?

+1

깃발이 없습니다. 인터프리터의 큰 부분을 다시 작성하여 AST를 직접 해석하도록해야한다. AST로 파싱하지 않고 소스를 해석하도록 생각한다면 훨씬 더 재 작성해야한다. – user2357112

+0

Cython입니까? 해석기를 사용할 때, 규정되지 않은 "Python"은 기본적으로 CPython (IronPython, Jython, PyPy 등)을 의미합니다. –

+2

@NickT, 제 질문은 어떻게 명확합니까? Cython이 아닌 CPython을 지정했습니다. –

답변

3

cpython으로 실행되는 모든 코드는 바이트 코드로 컴파일되어야 실행될 수 있습니다. 그것은 통역사가 어떻게 작동하는지, 그리고 아마도 당신은 합리적으로 (자신의 통역사를 쓰지 않고) 이것을 변경할 수 없습니다.

그러나 기본적으로로드 된 모듈의 컴파일 된 바이트 코드는 .pyc 개의 파일에 캐시됩니다. 즉, 다음에로드 할 때 다시 컴파일 할 필요가 없습니다. 바이트 코드 캐싱은 이전에 사용 된 모듈을 상당한 양으로 가져 오는 속도를 높일 수 있기 때문에 아마도 들었을 것입니다. 하지만 모듈이로드 된 후에는 성능이 변경되지 않습니다.

-B 명령 줄 옵션 또는 PYTHONDONTWRITEBYTECODE 환경 변수를 사용하여 바이트 코드 캐싱을 비활성화 할 수 있습니다. 속도 차이를 테스트하려면 기존 캐시를 삭제해야 할 수도 있습니다. Python 2에서 컴파일 된 바이트 코드는 .py 소스 파일 바로 옆에있는 .pyc 파일에 기록됩니다. Python 3에서는이 버전이 폴더로 변경되어 다른 버전의 Python에서 여러 개의 파일을 저장할 수 있습니다 (자세한 내용은 PEP 3147을 참조하십시오).

+1

감사합니다. 이것은 매우 도움이됩니다. 그래도 바이트 코드 컴파일로 인한 속도 향상을 보여주는 벤치 마크는 알고 있습니까? 확실하게 기능을 처음 테스트했을 때 비교가 이루어 졌지? –

관련 문제