es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Programa de Cython (imprimir Hola mundo) mucho más lento que Python puro.

Soy nuevo en Cython. He escrito un programa de prueba super sencillo para acceder a los beneficios de Cython. Sin embargo, mi código en Python puro es mucho más rápido. ¿Estoy haciendo algo mal?
test.py:

import timeit
imp = '''
import pyximport; pyximport.install()
from hello<em>cy import hello</em>c
from hello<em>py import hello</em>p
'''

<p>code<em>py = '''
hello</em>p()
'''</p>

<p>code<em>cy = '''
hello</em>c()
'''</p>

<p>print(timeit.timeit(stmt=code<em>py, setup=imp))
print(timeit.timeit(stmt=code</em>cy, setup=imp))
```</p>

hello_py.py:
<code>
def hello_p():
print('Hello World')
</code>

hello_cy.pyx:
</code></pre>

from libc.stdio cimport printf</p>

cpdef void hello<em>c():
cdef char * hello</em>world = 'hello from C world'
printf(hello<em>world)
```
hellopy timeit tarda 14.697s

hello_cy timeit tarda 98s

¿Me estoy perdiendo algo? ¿Cómo puedo hacer que mis llamadas a las funciones cpdef sean más rápidas?

¡Muchas gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    No es necesariamente sorprendente que tu implementación en Python puro sea más rápida que la implementación en Cython en este caso. Esto puede deberse a factores como el tamaño pequeño del programa y el sobrecosto de llamar a la función de Cython desde Python.

    Para mejorar el rendimiento de tu implementación en Cython, podrías considerar el uso de características más específicas de Cython, como la declaración de tipos y las vistas de memoria. También podrías intentar compilar el código de Cython con las optimizaciones habilitadas (por ejemplo, usando la bandera -O) para ver si eso mejora el rendimiento. Además, es recomendable ejecutar tus pruebas de rendimiento varias veces y tomar el promedio para obtener una medida más precisa del rendimiento.

Comments are closed.