
220
고성능 파이썬(2판)
래그를 사용해서 이 설정을 변경할 수도 있다. 경계 검사를 해제하려면
.
pyx
파일 첫머리에 주
석으로 사이썬 구문을 추가하면 된다.
#cython: boundscheck=False
def
calculate_z(int maxiter, zs, cs):
이미 언급했듯이 경계 검사는 제일 바깥쪽 루프에서 처리하는 부분이라 해제하더라도 성능 개
선에는 크게 도움이 되지 않는다. 이 예제에서도 경계 검사 해제가 성능에 영향을 주지 않는다.
TIP
항목을 자주 역참조하는
CPU
위주의 코드가 루프 안에 있다면 리스트 범위 검사나 랩어라운드
wraparound
검사를
1
비활성화해 보라.
7.8
사이썬과 넘파이
list
객체(
3
장 참고)가 가리키는 객체는 메모리의 어디든 존재할 수 있기에, 역참조에 따른
부가비용이 든다. 반면 배열 객체는 기본 타입을 연속적인
RAM
블록에 저장하므로 주소 계산
이 빠르다.
파이썬에는
array
모듈이 있다. 이 모듈은 기본 타입 (정수, 부동소수점 수, 문자, 유니코드 문
자열 등 )에
1
차원 저장소를 제공한다. 넘파이의
numpy
.
array
모듈을 사용하면 다차원 배열과
다양한 기본 타입 (복소수 포함 )을 저장할 수 있다.
array
객체를 미리 예측할 수 있는 패턴으로 이터레이션한다면, 파이썬에서 다음 주소를 요청 ...