불필요한 슬라이스 복사를 방지하는 것은 다음과 같은 경우에 무의미 슬라이스 복사를 방지하기위한 공통의 관용구가 있습니다. extend
에게주는 새로운 슬라이스를 메모리에 작성하는 대신 "이 현재 오브젝트의 범위 만 사용"이라고 말하고 싶습니다.파이썬
>>> a = bytearray(1000000) # a million zero bytes
>>> a[0:900000].count(b'\x00') # expensive temporary slice
900000
>>> a.count(b'\x00', 0, 900000) # helpful start and end parameters
900000
을하지만, 많은 내 첫 번째 예에서 extend
처럼,이 기능이없는 :
일부 방법은 예를 count
를 들어, 슬라이스 매개 변수와 함께 당신을 도울 것입니다.
많은 응용 프로그램에서 내가 말하고자하는 것은 마이크로 최적화라고 생각하기 때문에 누구나 묻기 전에 - 예, 응용 프로그램을 프로파일 링했습니다. 내 경우에 대해 걱정할만한 가치가 있습니다.
아래에 '해결책'이 하나 있지만 더 좋은 아이디어는 언제든지 환영합니다.
버퍼는 버퍼 인터페이스를 지원하는 객체에 적합한 선택입니다. 대개 소량의 경우 50 % 이상이 여전히 작은 금액이기 때문에 작은 케이스의 경우 특별한 대소 문자를 구분할 가치가 없습니다 (대부분의 사용 사례가 작은 경우 제외). –