Cython에서는 선언되지 않은 변수 유형이 전체 프로세스의 속도를 늦추는 데 더 많은 오버 헤드를 발생시키는 것으로 알려져 있습니다. 이 미지의 변수 타입처럼 중첩 루프 내부에 사용되는 경우모든 변수를 명시 적으로 선언하는 Cython 명령
:
def test(b, c, m, n, p):
ctype double a
for i in range(m)
for j in range(n)
for k in range(p)
a = b + c
return a
오버 헤드가 더 높을 수있다. 많은 변수가있는 문제에서 하나 또는 다른 유형을 선언하는 것을 쉽게 잊어 버릴 수 있으며 컴파일러는 Cython이 필요한 오버 헤드를 수행하므로 경고를 발생시키지 않습니다.
모든 변수가 명시 적으로 선언되도록하는 명령이 Cython에 있습니까?
나는, 긍정에서 너무 일반적이었다 [있지만 모든 경우에 제가 일한지 (https://github.com/ :
는 보통 중요한 부분은 루프에 대한 깊은 saullocastro/desicos/blob/master/desicos/clpt.pyx), 명시 적 선언은 성능을 크게 향상시킵니다 (중첩 루프 내에서 하나의 변수를 선언하지 않음으로써 측정 할 수 있음) –
@SaulloCastro 좋습니다. 어쨌든 "typedness annotation"은 또한 잠재적 인 다른 문제 (예 : 앞에서 설명한 int -> object wrapping)를 발견하므로 어쨌든 그것을 권하고 싶습니다. – delnan