Intenté cythonizar algún código de Python, pero el resultado (medición del tiempo) es peor que el código de Python puro. ¿Cuál podría ser la razón?

Sin un código para mirar, un código que tiene el problema, es muy difícil simplemente mirar mi cristal y encontrar una explicación. No ha ofrecido pistas sobre lo que está haciendo su programa o las bibliotecas que está utilizando. ¿Estamos hablando del tiempo de CPU? ¿O el tiempo transcurrido para la carrera? ¿Es la memoria un problema para este programa? Sería útil saber qué versiones de Python y de cython está utilizando en qué sistema operativo.

Por supuesto, no nos digas ni nos muestres nada que sea exclusivo. Pero si tiene un requisito para desarrollarse en la oscuridad, entonces tiene un requisito para consultores pagados con NDA firmados cuando necesite ayuda.

Pero tontamente tomaré una puñalada aquí en la oscuridad y haré una sugerencia. Suponiendo que el tiempo de CPU es el problema, intente ejecutar su programa (la versión original de Python) con Pypy en lugar de cpython y vea si eso ayuda. Debería ser menos oneroso para usted y luego convertir el código a cython. Es posible introducir nuevos defectos en su código cuando lo está transformando en cython. Mi sospecha es que accidentalmente ha introducido una falla que afecta el rendimiento en el código en la transformación de su código.

La primera regla de optimización es corregirlo antes de intentar ajustarlo. La segunda regla es medir antes de realizar cambios para optimizar. No solo mida el tiempo de ejecución total. Aprenda cómo perfilar su código. Si su tiempo de ejecución va en llamadas al sistema o en operaciones de E / S, entonces mejorar el rendimiento de la CPU de su código sin reducir la cantidad de llamadas al sistema u operaciones de E / S no producirá las mejoras deseadas.

Tal vez estás haciendo las cosas al estilo Python, que deberías estar haciendo el Cython. No es suficiente para nosotros un intérprete o compilador diferente. Querrá seguir las convenciones y el estilo de codificación.

Es probable que Python ya esté optimizando sus rutinas en cierta medida más allá de lo que está haciendo.