[Cython] Cython syntax to pre-allocate lists for performance
Stefan Behnel
stefan_ml at behnel.de
Thu Mar 7 12:21:39 CET 2013
Yury V. Zaytsev, 07.03.2013 12:16:
> Is there any syntax that I can use to do something like this in Cython:
>
> py_object_ = PyList_New(123); ?
Note that Python has an algorithm for shrinking a list on appending, so
this might not be sufficient for your use case.
> If not, do you think that this can be added in one way or another?
>
> Unfortunately, I can't think of a non-disruptive way of doing it. For
> instance, if this
>
> [None] * N
>
> is given a completely new meaning, like make an empty list (of NULLs),
> instead of making a real list of Nones, it will certainly break Python
> code. Besides, it would probably be still faster than no pre-allocation,
> but slower than an empty list with pre-allocation...
>
> Maybe
>
> [NULL] * N ?
What do you need it for?
Won't list comprehensions work for you? They could potentially be adapted
to presize the list.
And why won't [None]*N help you out? It should be pretty cheap.
Stefan
More information about the cython-devel
mailing list