2012-02-18 12 views
14

Los módulos de extensión de Python escritos en C son más rápidos que los programas equivalentes escritos en Python puro. ¿Cómo se comparan estos módulos de extensión (velocidad) con los programas escritos en C puro? ¿Los programas escritos en C puro son incluso más rápidos que el módulo de extensión de Python equivalente?Extensiones de velocidad de Python en C contra C

+0

Tal vez deberías considerar Cython si piensas en escribir extensiones/módulos/... – hochl

+0

En C vs. C? ¿Qué? –

+0

@hochl - ¿No es Cython solo Python normal? A diferencia de Jython o IronPython? – mau5padd

Respuesta

15

¿Cómo estos módulos de extensión se comparan (velocidad del reloj) a los programas escritos en C puro?

Son un poco más lentos debido a la traducción entre las estructuras de datos de Python -> tipos de C. Sin tener en cuenta esta traducción, el código C real se ejecuta exactamente a la misma velocidad que una función C normal.

¿Los programas escritos en C puro son incluso más rápidos que el módulo de extensión de Python equivalente?

Los programas C (escritos por completo en C) pueden ser más rápidos que los programas de Python que usan los módulos de extensión C. Si el programa C y el módulo de extensión están escritos con el mismo nivel de complejidad, habilidad del codificador, complejidad algorítmica, etc., el programa C ganará todo el tiempo. Sin embargo, si no eres un gurú C y estás compitiendo con una extensión Python C altamente optimizada, Python podría ser más rápido.

4

Ser una extensión de Python no afecta la velocidad de ejecución de un fragmento de código, excepto en la medida en que el Python invocándolo es más lento que el equivalente C, y el compilador es menos capaz de desenrollar agresivamente y el código en línea que cruza el límite C/Python.

Es decir, si solo tiene el código de Python, llame a una función C y luego haga todo su trabajo en esa función, la única diferencia de rendimiento será la cantidad de tiempo que pasó antes de ingresar al el lado C de las cosas. A partir de ahí, se es nativa C.

Cuestiones relacionadas