2011-09-10 5 views
1

필자가 정의한 기능에 대해서는 걱정하지 않지만 내장 함수 또는 esp에 대해서는 걱정하지 않습니다. 가져온 모듈의 모듈 기본적으로 이러한 충고는 여전히 적용됩니까? 어떻게 파이썬 3.2 루프에서 함수 호출을 처리합니까?

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Local_Variables

http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Avoiding_dots...

나는 PyPy의 JIT 너무 날 여기 도움이 할 수 있다고 생각하지만, 나는 리눅스 클러스터에 일을 실행해야합니다 (내 소스가 이미 Py3k입니다).

+0

예, 여전히 적용됩니다. – agf

+0

이들은 CPython에만 유효합니다. PyPy의 경우, 예를 들어 진정으로 해로운 것과 상관없는 경미한 유용성이있을 수 있습니다. – fijal

답변

4

예. 정확한 버전은별로 중요하지 않습니다. 이러한 최적화는 일반적인 경우 (간단히 말해서 통역사가 염두에 두는 반면 JIT 컴파일러는 특정 경우에 대해 더 나은 코드를 생성 할 수 있음)에 대해 간단하고 효율적인 구현을 입증하는 의미로 언어 기능의 사용을 최소화하는 것으로 마무리됩니다. 구체적으로는 다음과 같습니다.

  • 속성 검색은 여전히 ​​멋진 알고리즘을 따릅니다. 해시 테이블 조회 (입니다. 그러나 큰 O는 모든 것이 아님), 상속 체인을 길게 (잘,별로 중요하지 않음) 상속 체인을 걷고 다른 설명자 (속성, 바인딩 된 메소드 가져 오기)를 호출합니다.). Variable (특히 local, 아래 참조) lookup은 비교에서 죽은 단순하고, 문제의 객체가 이미 스택의 최상위에 있지 않는 한 더 적은 바이트 코드 명령어를 요구한다.
  • 로컬 변수는 여전히 컴파일 타임에 열거 될 수 있지만 (스택을 사용하여 다소 효율적으로 구현할 수 있음), 모듈 객체에 대한 참조가있는 모든 사용자가 전역 변수를 추가하고 제거 할 수 있으며 문자열 (requring 그들을 위해 해시 테이블 사용).