[Cython] Too many instantiations with fused type memoryviews
Pauli Virtanen
pav at iki.fi
Sat Mar 8 21:11:55 CET 2014
Hi,
FYI: Cython instantiates fused type routines with memoryview arguments
unnecessarily many times.
Example:
```
ctypedef fused idx_t:
short
long
# Cython 0.20.1 instantiates this function 128 times,
# even though only 2 would be needed
def fubar_128(idx_t[:] a,
idx_t[:] b,
idx_t[:] c,
idx_t[:] d,
idx_t[:] e,
idx_t[:] f,
idx_t[:] g):
print("HALLO")
def fubar_2(idx_t a,
idx_t b,
idx_t c,
idx_t d,
idx_t e,
idx_t f,
idx_t g):
print("HULLO")
```
$ cython cymod.pyx
$ cython --version
Cython version 0.20.1
$ grep -c 'print("HALLO")' cymod.c
128
$ grep -c 'print("HULLO")' _cymod.c
2
The n**m explosion starts to hurt quite quickly when there are several
array arguments and more than one fused type. I think this issue is
also accompanied by some signature resolution bugs (I'll try to come
up with an example case).
Cheers,
--
Pauli Virtanen
More information about the cython-devel
mailing list