Re: possible bug in Pyrex
Robert Bradshaw <[email protected]> Thu, 25 Feb 2010 16:36:01 -0800
| Newsgroups | gmane.comp.python.pyrex |
|---|---|
| Message-ID | <[email protected]> |
On Feb 25, 2010, at 3:29 PM, Greg Ewing wrote: > Stefan Behnel wrote: > >> As a general rule of thumb, the code generated by Cython is quite a = >> bit >> longer and substantially faster than the corresponding Pyrex code. > > Be careful you're not comparing apples with oranges here, > though. Pyrex is capable of generating quite efficient code > for many things, it's just not as automatic as Cython. Yes, for example, both can generate near optimal code with heavy use = of the Python/C API. One of Cython's goals is that users no need to = know this API to generate optimal code (or at least as close as we can = get). There are other things, such as argument unpacking, that can't = be as easily controlled by the user. > For example, I gather that Cython will generate a test > for a list object and index it using list-specific calls > in that case. > > Recent versions of Pyrex will also use list-specific calls, > but only if you declare it as a list. Theoretically this > should be even faster, because there is no run-time test > involved. If an object is declared as a list, no run-time test will be generated = in Cython either. There is a slight performance penalty for, say, = indexing into a non-list with a cdef int, but it is relatively small = and yields large gains for the common case of indexing into a list. - Robert