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
Respuesta
¿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.
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.
- 1. Perfilando extensiones python C
- 2. Extensiones Python y OpenMP C
- 3. Extensiones/módulos anidados de Python C?
- 4. Docstrings en C extensiones a Python?
- 5. Establecer el compilador C/C++ para las extensiones de Python
- 6. Creando extensiones C de Python de 64 bits en Windows
- 7. ¿Extensiones extendidas en C++?
- 8. Velocidad de C# listas
- 9. Implementando extensiones de lenguaje C#
- 10. Bitwise O: C# contra C++
- 11. ¿Cómo se compilan las extensiones Python C/C++ para diferentes sistemas operativos/versiones de Python?
- 12. ¿Cómo puedo usar valgrind con las extensiones de Python C++?
- 13. Cómo usar extensiones C en python para evitar GIL
- 14. C# Velocidad de expresión lambda
- 15. Velocidad de construcciones diferentes en lenguajes de programación (Java/C#/C++/Python/...)
- 16. Programación de red: Python contra C para un principiante completo
- 17. velocidad de C++ yC# en comparación con
- 18. Velocidad de llamada virtual en C# vs C++
- 19. Err.Number (VB6 contra C#)
- 20. Creando/probando un proyecto Python con extensiones C
- 21. SQLAlchemy con Python 3.2: ¿las extensiones C no son compatibles?
- 22. Extensiones de Python C: ¿por qué las funciones C invocables toman argumentos y devuelven PyObject *
- 23. jRuby, gemas con extensiones C
- 24. Python Eliminando ciertas extensiones de archivos
- 25. ¿Los complementos de python siempre son extensiones C (incluso en PyPy)?
- 26. Comportamiento de feof de PHP contra C
- 27. C#: eventos seguros contra subprocesos
- 28. C++ Vector en/[] velocidad del operador
- 29. Establecer la velocidad del ventilador en C#
- 30. ¿Cómo comparar BSTR contra una cadena en c/C++?
Tal vez deberías considerar Cython si piensas en escribir extensiones/módulos/... – hochl
En C vs. C? ¿Qué? –
@hochl - ¿No es Cython solo Python normal? A diferencia de Jython o IronPython? – mau5padd