> 백엔드 개발 > 파이썬 튜토리얼 > 전역, 속성 또는 슬롯에 비해 Python 지역 변수가 얼마나 더 좋습니까?

전역, 속성 또는 슬롯에 비해 Python 지역 변수가 얼마나 더 좋습니까?

Barbara Streisand
풀어 주다: 2024-12-28 02:07:11
원래의
517명이 탐색했습니다.

How much better are python local variables over globals, attributes, or slots?

아니면 다른 변수들은 지역변수에 비해 얼마나 나쁜가요?

무슨 일이 있나요?

일부 기사에서는 Python 프로그래머에게 지역 변수를 많이 사용하게 된다면 참조만 하고 변경하지 않더라도 지역 변수를 사용하라고 조언합니다.

예를 들어, 다음은 "Making Python Programs Blazing Fast"의 두 인용문입니다.

"실제로 함수의 로컬 변수(가장 빠름), 클래스 수준 속성(예: self.name - 느림) 및 전역(예: time.time과 같은 가져온 함수(가장 느림)) 간에도 조회 속도에 차이가 있습니다. ."

"속성에 접근하지 마세요

프로그램 속도를 저하시킬 수 있는 또 다른 요인은 객체 속성에 액세스할 때 사용되는 도트 연산자(.)입니다. 이 연산자는 getattribute를 사용하여 사전 조회를 트리거하며, 이로 인해 코드에 추가 오버헤드가 발생합니다. "

또한 이것이 유일한 가능성은 아닙니다. 다음의 차이점은 무엇입니까?

  • 클래스 속성,
  • 인스턴스 속성,
  • 슬롯 인스턴스 속성,
  • 메서드 속성 및
  • 함수(비메서드) 속성?

테스트

1,000,000번 반복되는 루프 내에서 이러한 모든 항목을 사용하여 테스트했지만 내부 반복당 작업은 최소화되었습니다. 함수는 클래스 외부의 함수에 대한 함수 속성을 테스트하는 데 사용되는 함수를 제외하고 모두 클래스의 메서드였습니다.

일반적인 기능의 형식은 다음과 같습니다.

모든 코드는 포스팅 하단에 있습니다.

결과

설명:
성능을 비교할 때 항상 Km당 리터 또는 계산당 초가 아닌 갤런당 마일 또는 초당 계산과 같은 (업적/자원)을 비교하십시오.

  • 시간은 timeit에서 보고한 대로 유효 숫자 3자리로 제한됩니다.
  • 비율은 시간의 역수입니다. 초당 몇개인가요?
  • 상대성능은 최고와 비교한 비율입니다. 상대적 성능을 이용하면 클수록 좋고, 2배 크면 2배 좋습니다.

조사 결과

네, 지역 변수가 가장 빠릅니다.

세 가지 그룹으로 분류된 다양한 유형의 변수의 성능

  1. 로컬, 전역 및 클래스 인스턴스 슬롯 변수: 전역 변수는 로컬 변수보다 96% 빠르며, 클래스 인스턴스 슬롯 속성은 92% 빠릅니다.
  2. 클래스 속성, 슬롯이 없는 클래스 인스턴스 속성, 함수 속성: 이들은 각각 로컬 변수의 62%, 59%, 55% 성능을 발휘합니다.
  3. 메서드 속성: 메소드 속성을 사용하는 것은 자체 클래스에 속하며 로컬 변수 성능의 31%입니다.

결론

놀랍게도 상식과 비교할 때 전역은 클래스의 슬롯 인스턴스 속성보다 두 번째로 우수합니다. 또 놀라운 점은 메소드 속성이 최악이라는 점입니다.

암호

위 내용은 전역, 속성 또는 슬롯에 비해 Python 지역 변수가 얼마나 더 좋습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿