"Algo que puede ser muy rápido, no significa que sea lo mejor. Es como intentar llevarte un Ferrari a la selva, pues si el Ferrari sera muy rápido pero no significa que el Ferrari sea lo mejor, el contexto importa" - Miguel Ángel Durán. Excelente esta analogía, me la guardo para el camino :)
Me encantaría saber que tiene que cruzar por esa mente como para tomar un respiro frente al teclado y llevar cada uno de los dedos a una tecla para armar esa oración jaja..
Python ES lento. Lo que hace "rápido a Python" son las bibliotecas optimizadas que implementan operaciones críticas en lenguajes de bajo nivel como C, C++ o Fortran. Como con cualquier lenguaje interpretado (aunque no es puramente interpretado). Para el caso específico de loops intensivos ES lento.
no tengo nada en contra de python, me gusta pero sí, porque dependen de otros lenguajes, numpy hecho casi mas en C que en Python, y así muchos mas, comparado con otros lenguajes que si son todo implementado en eso mismo o ensamblador
Sí, Python funciona bien como pegamento de dependencias. Las librerías de ciencia de datos están todas escritas en Fortran, C, C++, Rust y algo (o mucho) de ensamblador. Como Python tiene una API en C bastante decente, permite usar esas librerías de bajo nivel, con código de alto nivel fácilmente.
si usas una libreria de C en python para que el test termine mas rapido, no estas probando la velocidad de python sino la velocidad con la que python llama a algo en C y la lo que tarda en C
Puedo confirmar lo de bun vs go. Me sorprendió, pero hace unos meses migré uno de mis servicios de go a bun por temas de eficiencia a la hora de desarrollar, no por temas de rendimiento, y me sorprendió que el rendimiento fuese idéntico.
incluso a veces sacrificamos rendimiento con tal de que el código sea mas legible y mas fácil de mantener, se puede arreglar el rendimiento desde otro punto de vista
Ok, python no será muy rápido ejecutándose pero es muy fácil y rápido de programar y aprender (y muy divertido) además de ser muy fácil de optimizar, comparado con otros lenguajes gracias a su interoperatividad con lenguajes como c o c++. La verdad es que hace mucho que el bajo rendimiento no es un problema que afecte demasiado a los proyectos Python.
Aún así... Son mil millones de iteraciones y la diferencia apenas y es del orden de las milésimas de segundo. Esto significa que para que la diferencia sea de tan apenas 3 segundos (contra Rust) o de 8 segundos (Zig) tendrías que tener un millón de millones de elementos. La diferencia ni siquiera es significativa
Las herramientas de software son eso, herramientas. asi como un martillo es lo mejor para ciertos casos, en otros sera peor que un machete o una pala. Todo depende del contexto y el problema que se quiere solucionar.
injusta la coomparativa, generalmente en los bucles los lenguajes mas cercanos a la maquina optan por pasar las variables de uso frecuente a registros del procesador ademas de otras optiomizaciones en tiempo de compilacion
Estos benchmark no sirven de nada, incluso elixir es usado en aplicaciones de alto rendimiento, y como es funcional no existen los loops, son simulados, por otro lado cada lenguaje tiene su proposito
python es muy bueno en ordenes directas, por eso se usa en robotica. Cada lenguaje de programacion es para lo que es, yo no me pondria a hacer una pagina web con c, o rust, usaria javascript, php. Analisis de datos y robotica pues python, cada cosa para tu campo. NO EXISTE UN LENGUAJE DE PROGRAMACION MEJOR QUE OTRO.
Yo les dejo una idea. Que se hagan el mismo benchmark, pero que en lugar de loops, que al final seran varios, que se recorran una base de datos, que analicen los datos y realicen cambios segun criterios y que esto lo realicen cada x minutos, allí si tendrán una respuesta más clara de que lenguaje es mejor para hacer una tarea simple y rutinaria que a su vez, se parece al susodicho looptoloop.
llevo 8 años usando python, para mi caso de uso va, y generalmente si algo se te hace muy lento, es porque no lo has planteado de la manera adecuada. En los 80 l8s ordenadores iban a 4.77 MHz, ahora con churrocientos GHz, varios niveles de caché, SIMD y toda la parafernalia, la peña se queja de la velocidad de un bucle...
Argumento definitivo que te hará ganar cualquier discusión de programación: "El lenguaje que uso hace que una barrita se mueva mas rápido que el tuyo."
es que tambien el contexto no ayuda, mil millones de interaciones, en el mundo real se trata de evitar o optimizar lo que son las interaciones, por algo el cache con redis es tan rapido
Estoy medianamente de acuerdo. si bien menciona que python es mejor para el tratamiento de datos, pero es mejor por todo el trabajo que hay detrás por la comunidad al crear librerías para tratar datos. Lo curioso( quizá no tanto) es que js ha tenido un crecimiento exponencial en los últimos 15 años y con un rendimiento considerable y la gente no lo eligió para masificar la IA. Google lo intentó con tensorflowJs pero no lo adoptaron. Entonces, que para el manejo de dato sería mejor otros lenguajes como js o java, c#; sí. Pero que no lo son porque la fortaleza de python es que su curva de aprendizaje es baja y la gente lo adoptó para crear el monstruo de los modelos sobre python. Así que el benchmark lo es todo y es lomas importante, sobre todo para que cuando la gente que ya domina los lenguajes pero sobre ello necesita el máximo rendimiento, pues ya puede elegir entre comida, facilidad y rendimiento. Por eso muchos proyectos donde el rendimiento lo es todo elegían C. Ahora quieren pasarse a RUSt.
Es que hay mucho mito. Python nunca me ha parecido especialmente más simple que otros lenguajes, no veo de donde se sostiene ese argumento. Lo mismo con el asunto de manejo de datos, es que no hay nada que se pueda hacer en python que no se pueda hacer en C# (por nombrar uno) y habiendo trabajado en los 2 lenguajes en manejo de datos, C# es más simple, más ordenado y más rápido
Esos que dices es muy cierto el contexto importa, pero hay gente tan Fan con Pyton que son los que se escandalizan, como es el lenguaje de moda(Porque es lo que es), y quieren usar Pyton como navaja Suiza.
Python y Ruby, por ejemplo, son lenguajes interpretados. Es normal que sean más lentos que los compilados. Pero aún así, como bien explicas, la comparación no tiene mucho sentido más allá del experimento en sí mismo.
Ojalá los lenguajes no estuvieran tan atados al compilador/interprete, el performance depende de ese componente. Un lenguaje debería escogerse únicamente por su sintaxis, no por su implementación.
No significa nada. Hacer mil millones de veces la misma operación seguida no se asemeja a ningún caso de uso real. Lo único que pone a prueba es lo inteligente que es el compilador, eliminando operaciones, vectorizando el código...
Ese benchmark dice que Zig es el dios del looping También... vos cada vez que aparece un benchmark lo desvirtuas todo lo que podes... acá nadie está hablando de casos de uso, los benchmarks no miden casos de uso, los benchmarks miden performance en diferentes ámbitos, en este caso algo tan pequeño cómo invocar funciones dentro de loops... Obviamente no se puede tomar cómo la norma, yo diría que habría que hacer muchos benchmarks en diferentes cosas y hacer un promedio, pero tampoco es tan importante
No se están invocando funciones dentro del loop, se está haciendo un cálculo aritmético. Si fuesen llamadas a funciones, ninguno tardaría menos de un segundo. Sinceramente es un micro benchmark completamente inútil, porque nunca vas a hacer nada así en código real. En la realidad, usarías lecturas o escrituras a memoria, que ponen a prueba el caché o ancho de banda de memoria, o harías llamadas a funciones que pongan a prueba los registros del procesador y el sistema operativo, u operaciones de disco y red (I/O), que es ultra lento si se compara a lo anterior. Cualquiera de esos haría que el tiempo del loop fuese insignificante a su lado.
Solo diré que meter la función random en el medio ya es como absurdo. En el caso del de C, iterar con un for? xD, claramente el que hizo el código no tiene idea que hace un compilador. Ahí la dejo.
"Algo que puede ser muy rápido, no significa que sea lo mejor. Es como intentar llevarte un Ferrari a la selva, pues si el Ferrari sera muy rápido pero no significa que el Ferrari sea lo mejor, el contexto importa" - Miguel Ángel Durán. Excelente esta analogía, me la guardo para el camino :)
Qué mamada XD
Existen dos tipos de lenguajes de programación: Aquellos que todo el mundo critíca y aquellos que nadie usa. - Bjarne Stroustrup.
Midu no me gustó el video súbelo otra vez
🤣
xd
Este es el que pregunto porque no estaba CSS XD
Xddd
Me encantaría saber que tiene que cruzar por esa mente como para tomar un respiro frente al teclado y llevar cada uno de los dedos a una tecla para armar esa oración jaja..
Python ES lento. Lo que hace "rápido a Python" son las bibliotecas optimizadas que implementan operaciones críticas en lenguajes de bajo nivel como C, C++ o Fortran. Como con cualquier lenguaje interpretado (aunque no es puramente interpretado). Para el caso específico de loops intensivos ES lento.
correcto
¿Por qué no utilizaría una "list comprehension" en Python en vez de hacer semejante loop? Seguro que saldría mucho más rápido.
Porque esta prueba no tienen ningún sentido, ni siquiera es curiosa desde mi perspectiva, es como hacer código sin ninguna utilidad.
Pues es que nadie usa python sin librerías, seguro que si le metes numpy o pandas lo hace mucho más rapido.
no tengo nada en contra de python, me gusta pero sí, porque dependen de otros lenguajes, numpy hecho casi mas en C que en Python, y así muchos mas, comparado con otros lenguajes que si son todo implementado en eso mismo o ensamblador
Sí, Python funciona bien como pegamento de dependencias. Las librerías de ciencia de datos están todas escritas en Fortran, C, C++, Rust y algo (o mucho) de ensamblador. Como Python tiene una API en C bastante decente, permite usar esas librerías de bajo nivel, con código de alto nivel fácilmente.
De hecho hay gente que usa Python para HPC usando Numba o Cython.
si usas una libreria de C en python para que el test termine mas rapido, no estas probando la velocidad de python sino la velocidad con la que python llama a algo en C y la lo que tarda en C
¡Haces excelentes videos! Saludos desde Colombia, primer comentario, ya había visto la comparación del principio.
Puedo confirmar lo de bun vs go. Me sorprendió, pero hace unos meses migré uno de mis servicios de go a bun por temas de eficiencia a la hora de desarrollar, no por temas de rendimiento, y me sorprendió que el rendimiento fuese idéntico.
Hace unos días empecé a estudiar python ya sabiendo algo de js y justo ayer estaba buscando videos comparando a los 2 lenguajes. Qué buen timing
incluso a veces sacrificamos rendimiento con tal de que el código sea mas legible y mas fácil de mantener, se puede arreglar el rendimiento desde otro punto de vista
Midu, me gustó tu video. Súbelo otra vez
jajaja
Ok, python no será muy rápido ejecutándose pero es muy fácil y rápido de programar y aprender (y muy divertido) además de ser muy fácil de optimizar, comparado con otros lenguajes gracias a su interoperatividad con lenguajes como c o c++. La verdad es que hace mucho que el bajo rendimiento no es un problema que afecte demasiado a los proyectos Python.
No conozco el 80% de lenguajes que se citan, pero me extraña mucho que algo sea más rápido que C y no sea ensamblador.
Depende básicamente del compilador.
Aún así...
Son mil millones de iteraciones y la diferencia apenas y es del orden de las milésimas de segundo.
Esto significa que para que la diferencia sea de tan apenas 3 segundos (contra Rust) o de 8 segundos (Zig) tendrías que tener un millón de millones de elementos.
La diferencia ni siquiera es significativa
Las herramientas de software son eso, herramientas. asi como un martillo es lo mejor para ciertos casos, en otros sera peor que un machete o una pala. Todo depende del contexto y el problema que se quiere solucionar.
injusta la coomparativa, generalmente en los bucles los lenguajes mas cercanos a la maquina optan por pasar las variables de uso frecuente a registros del procesador ademas de otras optiomizaciones en tiempo de compilacion
Estos benchmark no sirven de nada, incluso elixir es usado en aplicaciones de alto rendimiento, y como es funcional no existen los loops, son simulados, por otro lado cada lenguaje tiene su proposito
Dos billones de loops anidados!!!, wow. Claro, es un caso de uso demasiado extremo.
python es muy bueno en ordenes directas, por eso se usa en robotica. Cada lenguaje de programacion es para lo que es, yo no me pondria a hacer una pagina web con c, o rust, usaria javascript, php. Analisis de datos y robotica pues python, cada cosa para tu campo. NO EXISTE UN LENGUAJE DE PROGRAMACION MEJOR QUE OTRO.
Claro que existen mejores y peores lenguajes; incluso si los separas por propósito, también vas a encontrar unos mejores que otros.
😂😂😅 que bueno Midu ✊ me mataste de risa con la ironía jeje lo más seguro que se les olvidó css y HTML
Yo les dejo una idea. Que se hagan el mismo benchmark, pero que en lugar de loops, que al final seran varios, que se recorran una base de datos, que analicen los datos y realicen cambios segun criterios y que esto lo realicen cada x minutos, allí si tendrán una respuesta más clara de que lenguaje es mejor para hacer una tarea simple y rutinaria que a su vez, se parece al susodicho looptoloop.
JavaScript vs. Python pelea de invalidos
llevo 8 años usando python, para mi caso de uso va, y generalmente si algo se te hace muy lento, es porque no lo has planteado de la manera adecuada. En los 80 l8s ordenadores iban a 4.77 MHz, ahora con churrocientos GHz, varios niveles de caché, SIMD y toda la parafernalia, la peña se queja de la velocidad de un bucle...
Argumento definitivo que te hará ganar cualquier discusión de programación: "El lenguaje que uso hace que una barrita se mueva mas rápido que el tuyo."
Es verdad lo que decis. A mi me encanta GNU/Linux pero tengo que reconocer que es lo mejor de lo mejor.
es que tambien el contexto no ayuda, mil millones de interaciones, en el mundo real se trata de evitar o optimizar lo que son las interaciones, por algo el cache con redis es tan rapido
Estoy medianamente de acuerdo. si bien menciona que python es mejor para el tratamiento de datos, pero es mejor por todo el trabajo que hay detrás por la comunidad al crear librerías para tratar datos. Lo curioso( quizá no tanto) es que js ha tenido un crecimiento exponencial en los últimos 15 años y con un rendimiento considerable y la gente no lo eligió para masificar la IA. Google lo intentó con tensorflowJs pero no lo adoptaron. Entonces, que para el manejo de dato sería mejor otros lenguajes como js o java, c#; sí. Pero que no lo son porque la fortaleza de python es que su curva de aprendizaje es baja y la gente lo adoptó para crear el monstruo de los modelos sobre python. Así que el benchmark lo es todo y es lomas importante, sobre todo para que cuando la gente que ya domina los lenguajes pero sobre ello necesita el máximo rendimiento, pues ya puede elegir entre comida, facilidad y rendimiento. Por eso muchos proyectos donde el rendimiento lo es todo elegían C. Ahora quieren pasarse a RUSt.
Es que hay mucho mito. Python nunca me ha parecido especialmente más simple que otros lenguajes, no veo de donde se sostiene ese argumento. Lo mismo con el asunto de manejo de datos, es que no hay nada que se pueda hacer en python que no se pueda hacer en C# (por nombrar uno) y habiendo trabajado en los 2 lenguajes en manejo de datos, C# es más simple, más ordenado y más rápido
Esos que dices es muy cierto el contexto importa, pero hay gente tan Fan con Pyton que son los que se escandalizan, como es el lenguaje de moda(Porque es lo que es), y quieren usar Pyton como navaja Suiza.
JavaGOD papeandose a todos esos lenguajes de papel.
Gracias Midu. Ya iba a cambiar todos los servicios de mi empresa de Go a C
Python y Ruby, por ejemplo, son lenguajes interpretados. Es normal que sean más lentos que los compilados. Pero aún así, como bien explicas, la comparación no tiene mucho sentido más allá del experimento en sí mismo.
Pypy menos de un décimo de python???? Hay algo raro aquí
Ojalá los lenguajes no estuvieran tan atados al compilador/interprete, el performance depende de ese componente. Un lenguaje debería escogerse únicamente por su sintaxis, no por su implementación.
Hola midu, siempre activo 😎
saludos desde argentina!
Bien midu, la herramienta (lenguaje) depende del producto y del contexto, es un medio para un proposito no un fin.
Ojito dart está por encima de node, bun y todos esos, hasta c# Java, kotlin, Swift …
Ojito ahora a desarrollar todo con dart 😅
Ojito con Google que en una de esas le da muerte 😅
Imagino que se debe a que es compilado
Justo estaba viendo eso. A mi Dart me gusta bastante incluso como sustituto de JS aunque para ello Google debería liberarlo
Nested loop. Probablemente lo más inútil que podrías usar para hacer un benchmark.
pero @midulive que IMHO lo acuñaron los estadounidenses, usan más honest que humble, es "in my honest opinion" jajajaj
Tremendo... a mi me sorprendio node y go... mas que nada por la fama que hacian de go por sobre node y otros... pero estan ahi
Te amo midu
Y dicen que php está muerto.😎👌🏿
Midu era que aumentes unos minutos mas de video , casi termino
Eso, defiende a mi python🤩 jajsja te queremos midu
Si, java y javascript (node, bun,. ) son más rápidos que python. No es en este código, es en cualquiera porque es un lenguaje leeeeeento
De los creadoras de las "bolas", llega, las "barras". xd
Muy hippie el mensaje de hoy
Por qué hacer cosas que no generan resultados validos?
Y dart ?
jajaja porque el beef con Dart @midudev 😂😂😂😂
Por qué les cuesta tanto aceptar que Python es lento, no pasa nada realmente porque no es su scope
En la vida real lo que importa ws un equilibrio entre el tiempo de desarrollo y el rendimiento del lenguaje
PELEA DE INVALIDOS!!
Faltó Froot Loop
Es que si tuviera validez y Python me da de comer y me seguirá dando de comer ¿Por qué me voy a molestar? Me molesta es no tener dinero.
A la gente le ha dado por Python, pero Python por su lentitud es muy mediocre, desde mi punto de vista claro está.
Pitón es un idioma supervalorado
Me gustra node para backend pero considero c# es mejor en muchos casos
Que onda con el lenguaje ODIN, es muy rapido y Fortrant también, pensaba que Lua era más rapido
Fortran es una bestia. Es uno de los lenguajes que más optimizaciones recibe porque se usa casi exclusivamente para bibliotecas de cálculo matemático.
Raro que no participe Assembly.
5:05 JAJAJAJ
Cuando ves que Rust es mas rapido que C, el benchmark pierde toda seriedad
Fin
que prueben usando la versión 3.8 de python. saludos
Aguante javascript!! 😄 👌👍
Solo entendi que gano js y perdio py
pero se sube a yutu?
Sí pero lento
lo mínimo que vas a tener en un lenguaje es loops
Claro...
Ponen Python puro y no ponen a Js puro...
Más que evidente el fallo y la preferencia 😂
Python es lento 😅, es fácil de usar pero lento
Yo programo directamente en binario, el mas veloz!
Languages WAR!!!
Python framework de C++
Los evangelistas😇 de Rust 🦀 se molestarán.
Dart 🔥
no sé nada loco, aguante c#
PHP > pyslow :v
PR de Julia
Como que no significa nada midu, entiendo que al no estar javascript en el top 5 tengas abajo, pero amigo, vamos a ponernos serios. :v
No significa nada. Hacer mil millones de veces la misma operación seguida no se asemeja a ningún caso de uso real. Lo único que pone a prueba es lo inteligente que es el compilador, eliminando operaciones, vectorizando el código...
@michael.urraca pero si JavaScript queda super bien parado de este benchmark... jajaja qué dices. Y aún así, no significa nada. :)
@@midulive Tienes razon, ratificar es de sabios. Un abrazo crack! Saludos desde Rep. Dom.
Go bien usado debería destrozar a Java
Cierto
javaGOD se lo papea usando solo un 1% de su poder.
@@juliocesarflorez6319 nah
quien comento lo de css?
xd
Dart es super rapido, no se por que no lo quieren, e sun lenguaje genial excepto en los modelos, son muy grandes xd
Imagino que es rápido porque es compilado, personalmente me gusta mucho su sintaxis
Que significa ese gráfico? (en español)
ni python, ni javascript... Dart!!!
Excel en te !
Ese benchmark dice que Zig es el dios del looping
También... vos cada vez que aparece un benchmark lo desvirtuas todo lo que podes... acá nadie está hablando de casos de uso, los benchmarks no miden casos de uso, los benchmarks miden performance en diferentes ámbitos, en este caso algo tan pequeño cómo invocar funciones dentro de loops...
Obviamente no se puede tomar cómo la norma, yo diría que habría que hacer muchos benchmarks en diferentes cosas y hacer un promedio, pero tampoco es tan importante
No se están invocando funciones dentro del loop, se está haciendo un cálculo aritmético. Si fuesen llamadas a funciones, ninguno tardaría menos de un segundo.
Sinceramente es un micro benchmark completamente inútil, porque nunca vas a hacer nada así en código real. En la realidad, usarías lecturas o escrituras a memoria, que ponen a prueba el caché o ancho de banda de memoria, o harías llamadas a funciones que pongan a prueba los registros del procesador y el sistema operativo, u operaciones de disco y red (I/O), que es ultra lento si se compara a lo anterior. Cualquiera de esos haría que el tiempo del loop fuese insignificante a su lado.
Primero me das la razón, luego dices que lo desvirtúo y luego me das la razón otra vez. A ver en qué quedamos. jajaja
Binario es el mejor lenguage....
Puro TypeScript jajaj
Solo diré que meter la función random en el medio ya es como absurdo. En el caso del de C, iterar con un for? xD, claramente el que hizo el código no tiene idea que hace un compilador. Ahí la dejo.
No he visto el vídeo pero se que Python es lento es javascript es feo
midu no me gustó el video, bórralo
Primer comentario jeje
primero