SlideShare una empresa de Scribd logo
1 de 21
Python más rápido  que C Facundo Batista Lucio Torre
Objetivos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Recuerden We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Donald Knuth Structured Programming with goto Statements ACM Journal Computing Surveys Vol 6, No. 4, Dec. 1974. p.268
Gap Bajo nivel  Alto nivel (código final)  (ideas) ASM  C  Python ¡este camino lo tiene que recorrer alguien!
Multiplicar un número ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Traduciendo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
ptrace int main() {  pid_t child; BIGNUM *count; child = fork(); count = BN_new(); if(child == 0) { ptrace(PTRACE_TRACEME, 0, NULL, NULL); execl("/usr/bin/python", "python", "nada.py", NULL); } else { int status; while(1) { wait(&status); if(WIFEXITED(status)) break; ptrace(PTRACE_SINGLESTEP, child, NULL, NULL); BN_add(count, count, BN_value_one()); } printf("Total %s", BN_bn2dec(count)); } return 0; }
Cuánto ejecutamos ,[object Object],[object Object],[object Object],[object Object],¡Python es más de 100 veces más lento! ¿Posta?
Multiplicamos un número ¿Cuanto se tarda en todo el proceso?   edición  compilación  ejecución C  x  y  z python  x/2  0  z * 100 calculadora  x/5  0  q  (q <<x) Para definir una metrica, lo importante es el contexto
Un caso más real ,[object Object],[object Object],[object Object],[object Object],[object Object]
Soportando big nums ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
¡A la hoguera! ¡Herejía, herejía!  (acá abandonamos el primer día de trabajo)
Enfocándonos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Matrices
Relación entre ambos Python es más parecido a C cuanto más grande es el cálculo (no tenemos ni idea por qué)
Saliendo de los números ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Optimizando Optimizamos después  de revisar tiempos Es más fácil optimizar código correcto que corregir código optimizado
Enfocándonos (de nuevo) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclu... ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
...siones Muchas veces C es más rápido que Python, pero no siempre se justifica el esfuerzo extra “ Premature optimization  is the root of all evil”  Donald Knuth
Copyright  Facundo Batista y Lucio Torre Licencia Atribución-No Comercial-Compartir Obras Derivadas Igual 2.5 Genérica http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR

Más contenido relacionado

La actualidad más candente

Microcontroladores
Microcontroladores Microcontroladores
Microcontroladores
electro_pic
 
Introducción a Google Go
Introducción a Google GoIntroducción a Google Go
Introducción a Google Go
Scalia
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentation
guestccc92ad
 

La actualidad más candente (18)

Microcontroladores
Microcontroladores Microcontroladores
Microcontroladores
 
Introducción a Google Go
Introducción a Google GoIntroducción a Google Go
Introducción a Google Go
 
Hebras En Accion
Hebras En AccionHebras En Accion
Hebras En Accion
 
Paralela9
Paralela9Paralela9
Paralela9
 
Numexpr (python madrid)
Numexpr   (python madrid)Numexpr   (python madrid)
Numexpr (python madrid)
 
Clase3_Python-CTIC
Clase3_Python-CTICClase3_Python-CTIC
Clase3_Python-CTIC
 
Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))Python científico (introducción a numpy y matplotlib))
Python científico (introducción a numpy y matplotlib))
 
Tarea 1
Tarea 1Tarea 1
Tarea 1
 
Clase2_Python-CTIC
Clase2_Python-CTICClase2_Python-CTIC
Clase2_Python-CTIC
 
Analisis de Algoritmos
Analisis de AlgoritmosAnalisis de Algoritmos
Analisis de Algoritmos
 
Laborqatoio 1 telematica
Laborqatoio 1 telematicaLaborqatoio 1 telematica
Laborqatoio 1 telematica
 
Aplicacion de limites
Aplicacion de limitesAplicacion de limites
Aplicacion de limites
 
Subrutinas de retardo
Subrutinas de retardoSubrutinas de retardo
Subrutinas de retardo
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentation
 
Introduccion a go
Introduccion a goIntroduccion a go
Introduccion a go
 
Pic retardos por software
Pic retardos por softwarePic retardos por software
Pic retardos por software
 
Micc final feb04_2010_soluc
Micc final feb04_2010_solucMicc final feb04_2010_soluc
Micc final feb04_2010_soluc
 
Analisis de Algoritmos Multihilo
Analisis de Algoritmos MultihiloAnalisis de Algoritmos Multihilo
Analisis de Algoritmos Multihilo
 

Destacado

Fases del proceso de programación
Fases del proceso de programaciónFases del proceso de programación
Fases del proceso de programación
Roberto Aguirre
 
Tipos de programacion
Tipos de programacionTipos de programacion
Tipos de programacion
Monik AZ
 
Fases del proceso de programación
Fases del proceso de programaciónFases del proceso de programación
Fases del proceso de programación
elizabethpaola
 
Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.
Anastacio Mendoza
 
Programación lineal entera y binaria
Programación lineal entera y binariaProgramación lineal entera y binaria
Programación lineal entera y binaria
Jaime Medrano
 
Mapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programaMapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programa
kparawhore
 
Programación de computadores
Programación de computadoresProgramación de computadores
Programación de computadores
947369
 
Lección 1 Introducción a los Lenguajes de Programación
Lección 1   Introducción a los Lenguajes de ProgramaciónLección 1   Introducción a los Lenguajes de Programación
Lección 1 Introducción a los Lenguajes de Programación
ocasas
 

Destacado (20)

Manual del dev c++
Manual del dev c++Manual del dev c++
Manual del dev c++
 
Parallel python sistemas operativos avanzados
Parallel python sistemas operativos avanzadosParallel python sistemas operativos avanzados
Parallel python sistemas operativos avanzados
 
Mvc
MvcMvc
Mvc
 
Php.ini
Php.iniPhp.ini
Php.ini
 
Java vs Python
Java vs PythonJava vs Python
Java vs Python
 
Introduction to python
Introduction to pythonIntroduction to python
Introduction to python
 
Fases del proceso de programación
Fases del proceso de programaciónFases del proceso de programación
Fases del proceso de programación
 
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION IMETODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
METODOLOGIA Y TECNOLOGIA DE LA PROGRAMACION I
 
Fases de dasorrollo de un software Mapa Conceptual
Fases de dasorrollo de un software Mapa ConceptualFases de dasorrollo de un software Mapa Conceptual
Fases de dasorrollo de un software Mapa Conceptual
 
Fases del proceso de programación
Fases del proceso de programaciónFases del proceso de programación
Fases del proceso de programación
 
Tipos de programacion
Tipos de programacionTipos de programacion
Tipos de programacion
 
Fases del proceso de programación
Fases del proceso de programaciónFases del proceso de programación
Fases del proceso de programación
 
Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.Evolución de los Lenguajes de Programación.
Evolución de los Lenguajes de Programación.
 
Programación lineal entera y binaria
Programación lineal entera y binariaProgramación lineal entera y binaria
Programación lineal entera y binaria
 
HISTORIA DE LA PROGRAMACION
HISTORIA DE LA PROGRAMACIONHISTORIA DE LA PROGRAMACION
HISTORIA DE LA PROGRAMACION
 
Clases Scrollbar,Scrollpane,Choice
Clases Scrollbar,Scrollpane,ChoiceClases Scrollbar,Scrollpane,Choice
Clases Scrollbar,Scrollpane,Choice
 
Mapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programaMapa conceptual fases en el desarrollo de un programa
Mapa conceptual fases en el desarrollo de un programa
 
Programación de computadores
Programación de computadoresProgramación de computadores
Programación de computadores
 
Python Programming Essentials - M5 - Variables
Python Programming Essentials - M5 - VariablesPython Programming Essentials - M5 - Variables
Python Programming Essentials - M5 - Variables
 
Lección 1 Introducción a los Lenguajes de Programación
Lección 1   Introducción a los Lenguajes de ProgramaciónLección 1   Introducción a los Lenguajes de Programación
Lección 1 Introducción a los Lenguajes de Programación
 

Similar a Python Vs C

Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
javiel162009
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
javiel162009
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
Jarvis_15
 
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
Ronny Morán
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
Carlota Guzman
 

Similar a Python Vs C (20)

Pyrapidc
PyrapidcPyrapidc
Pyrapidc
 
Phyton
PhytonPhyton
Phyton
 
Mynor Alexander Hernandez Canuz
Mynor Alexander Hernandez CanuzMynor Alexander Hernandez Canuz
Mynor Alexander Hernandez Canuz
 
Modelo Simulado
Modelo SimuladoModelo Simulado
Modelo Simulado
 
Investigacion 1
Investigacion 1Investigacion 1
Investigacion 1
 
Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)Varios tema de c++ por (alvaro tejada)
Varios tema de c++ por (alvaro tejada)
 
El arte de programar c++ - versión 3.0
El arte de programar   c++ - versión 3.0El arte de programar   c++ - versión 3.0
El arte de programar c++ - versión 3.0
 
Prueba
PruebaPrueba
Prueba
 
Manual.es
Manual.esManual.es
Manual.es
 
Tutorial c++
Tutorial c++Tutorial c++
Tutorial c++
 
Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Funciones C++
Funciones C++Funciones C++
Funciones C++
 
Ejercicios de programacion if - switch-case
Ejercicios de programacion   if  -   switch-caseEjercicios de programacion   if  -   switch-case
Ejercicios de programacion if - switch-case
 
Yudy Centeno M
Yudy Centeno MYudy Centeno M
Yudy Centeno M
 
Practicas bloque 1
Practicas bloque 1Practicas bloque 1
Practicas bloque 1
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
Organización y Arquitectura de Computadores ESPOL Tercera Evaluación 2012-2
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++
 
Instituto tecnológico particular
Instituto tecnológico particularInstituto tecnológico particular
Instituto tecnológico particular
 

Último

Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Fernando Solis
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
NadiaMartnez11
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
pvtablets2023
 

Último (20)

SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docxTALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
TALLER DE DEMOCRACIA Y GOBIERNO ESCOLAR-COMPETENCIAS N°3.docx
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
semana 4 9NO Estudios sociales.pptxnnnn
semana 4  9NO Estudios sociales.pptxnnnnsemana 4  9NO Estudios sociales.pptxnnnn
semana 4 9NO Estudios sociales.pptxnnnn
 
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptxRESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
RESULTADOS DE LA EVALUACIÓN DIAGNÓSTICA 2024 - ACTUALIZADA.pptx
 

Python Vs C

  • 1. Python más rápido que C Facundo Batista Lucio Torre
  • 2.
  • 3. Recuerden We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Donald Knuth Structured Programming with goto Statements ACM Journal Computing Surveys Vol 6, No. 4, Dec. 1974. p.268
  • 4. Gap Bajo nivel Alto nivel (código final) (ideas) ASM C Python ¡este camino lo tiene que recorrer alguien!
  • 5.
  • 6.
  • 7. ptrace int main() { pid_t child; BIGNUM *count; child = fork(); count = BN_new(); if(child == 0) { ptrace(PTRACE_TRACEME, 0, NULL, NULL); execl(&quot;/usr/bin/python&quot;, &quot;python&quot;, &quot;nada.py&quot;, NULL); } else { int status; while(1) { wait(&status); if(WIFEXITED(status)) break; ptrace(PTRACE_SINGLESTEP, child, NULL, NULL); BN_add(count, count, BN_value_one()); } printf(&quot;Total %s&quot;, BN_bn2dec(count)); } return 0; }
  • 8.
  • 9. Multiplicamos un número ¿Cuanto se tarda en todo el proceso? edición compilación ejecución C x y z python x/2 0 z * 100 calculadora x/5 0 q (q <<x) Para definir una metrica, lo importante es el contexto
  • 10.
  • 11.
  • 12. ¡A la hoguera! ¡Herejía, herejía! (acá abandonamos el primer día de trabajo)
  • 13.
  • 15. Relación entre ambos Python es más parecido a C cuanto más grande es el cálculo (no tenemos ni idea por qué)
  • 16.
  • 17. Optimizando Optimizamos después de revisar tiempos Es más fácil optimizar código correcto que corregir código optimizado
  • 18.
  • 19.
  • 20. ...siones Muchas veces C es más rápido que Python, pero no siempre se justifica el esfuerzo extra “ Premature optimization is the root of all evil” Donald Knuth
  • 21. Copyright Facundo Batista y Lucio Torre Licencia Atribución-No Comercial-Compartir Obras Derivadas Igual 2.5 Genérica http://creativecommons.org/licenses/by-nc-sa/2.5/deed.es_AR