[Cython] PATCH: removing strcmp() in favor of custom impl or other fixes
Lisandro Dalcin
dalcinl at gmail.com
Sat Mar 7 21:28:09 CET 2009
On Sat, Mar 7, 2009 at 4:47 PM, Stefan Behnel <stefan_ml at behnel.de> wrote:
>
> Since it's never used for anything but string equality checks, it would be
> better to restrict it to that (i.e. 1/0), instead of using the normal
> strcmp() -1,0,1 return values and additionally checking for "== 0"
> everywhere in the code. Maybe call it "__Pyx_StrEqual()".
>
OK. At first, I was going to impement it like that, but changed my
mind (for no good reason) in the process.
+1.
>
> Note that I already used (almost) the same optimisation in the code, which
> now becomes superfluous. Although I expect it to be a lot faster to check
> the length inside the loop before calling into the Python's C-API, these
> checks should be rare enough to just make that
>
> if (_PyString_Eq(**name, key)) ...
>
OK. I did not give a full review of that part of the code. So then
this _PyString_Eq() call will unlikely be ever made, right?
> The real fast-path is the loop with plain string pointer equality checks
> before all that. (BTW, note that this function is only available in Py2, so
> it's perfectly ok to use it here but not in general).
>
Of couse. I've decided to use _PyString_Eq() just because you had
already special-cased Python major version.
--
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
More information about the Cython-dev
mailing list