Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
Autor Mensaje
KenduScript Sin conexión
Empleado del buffet
A programmer was born
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 13
Agradecimientos dados: 6
Agradecimientos: 0 en 0 posts
Registro en: Apr 2013
Mensaje: #1
Brick C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
Esta mañana estaba algo aburrido y se me ocurrió hacer un experimento: comparar la velocidad a la que se ejecuta un mismo algoritmo en diversos lenguajes de programación. Para ello, hice un pequeño algoritmo que imprime parte de la serie de Fibonacci, en los siguientes lenguajes:

En C. Archivo: foo.c
Cita:#include <stdio.h>

foo(int a, int b) {
if (a + b > 0) printf("%i ", a + b);
if (a + b < 100000000) foo(b, a + b);
}

main() {
foo(-1, 1);
printf("\n");
}
En Java. Archivo: Foo.java
Cita:public class Foo {

public static void main(String[] args) {
Foo f = new Foo();
f.foo(-1, 1);
System.out.print("\n");
}

public void foo(int a, int b) {
if (a + b > 0) { System.out.print(a + b + " "); }
if (a + b < 100000000) { this.foo(b, a + b); }
}

}

En Perl. Archivo: foo.pl
Cita:#!/usr/bin/perl

sub foo {
($a, $b) = @_;
if($a + $b > 0) { print $a + $b . " "; }
if($a + $b < 100000000) { foo($b, $a + $b); }
}

foo(-1, 1);
print "\n";


En Python. Archivo: foo.py
Cita:#!/usr/bin/python
from sys import stdout


def foo(a, b):
if a + b > 0:
stdout.write("%i " % (a + b))
if a + b < 100000000:
foo(b, a + b)


foo(-1, 1)
print ""


En PHP. Archivo: foo.php
Cita:#!/usr/bin/php
<?php

function foo($a, $b) {
if($a + $b > 0) print $a + $b . " ";
if($a + $b < 100000000) foo($b, $a + $b);
}

foo(-1, 1);
print chr(10);

?>


En Ruby. Archivo: foo.rb

Cita:#!/usr/bin/ruby


def foo(a, b)
if (a + b) > 0
print a + b , " "
end

if (a + b) < 100000000
foo(b, a + b)
end
end

foo(-1, 1)
puts " "


Exceptuando los archivos en C y Java que deberán ser compilados (ver más adelante), al resto de los archivos les asigné permisos de ejecución para que sea más cómodo correrlos:

Cita:chmod +x foo.php foo.py foo.pl foo.rb

Y a continuación, me dediqué primero, a comparar la velocidad de compilación entre Java y C y obtuve estos resultados:

Tiempo de compilación en C:

Cita:time gcc foo.c -o fooc

real 0m1.970s
user 0m0.028s
sys 0m0.048s

Tiempo de compilación en Java:

Cita:time javac Foo.java

real 0m3.769s
user 0m0.816s
sys 0m0.100s

Se podría decir que la compilación en C, tardó (más o menos) la mitad del tiempo que la compilación en Java.

Finalmente ejecuté cada uno de los micro-programas, dos veces cada uno: la primera, para que se cachearan y la segunda, para comparar la diferencia en la velocidad de ejecución y ésto, fue lo que obtuve:

Tiempo de ejecución en C: 0.002 segundos

Cita:XXXXX@XXXX:~$ time ./fooc
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.002s
user 0m0.000s
sys 0m0.000s

Tiempo de ejecución en Java: 0.143 segundos

Cita:XXXXX@XXXX:~$ time java Foo
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.143s
user 0m0.112s
sys 0m0.028s

Tiempo de ejecución en Perl: 0.003 segundos

Cita:XXXXX@XXXX:~$ time ./foo.pl
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.003s
user 0m0.000s
sys 0m0.000s

Tiempo de ejecución en Python: 0.038 segundos

Cita:XXXXX@XXXX:~$ time ./foo.py
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.038s
user 0m0.024s
sys 0m0.012s

Tiempo de ejecución en PHP: 0.027 segundos

Cita:XXXXX@XXXX:~$ time ./foo.php
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.027s
user 0m0.020s
sys 0m0.004s

Tiempo de ejecución en Ruby: 0.009 segundos

Cita:XXXXX@XXXX:~$ time ./foo.rb
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
6765 10946 17711 28657 46368 75025 121393 196418 317811
514229 832040 1346269 2178309 3524578 5702887 9227465
14930352 24157817 39088169 63245986 102334155

real 0m0.009s
user 0m0.004s
sys 0m0.004s

Si se tratara de una carrera de autos la tabla de posiciones sería como la siguiente:

Cita:================================================
Turismo Compilación
================================================
Primer puesto: C
Segundo puesto: Java

================================================
Turismo Ejecución
================================================

PUESTO PILOTO TIEMPO (en segundos)
------------------------------------------------
1º C 0.002
2º Perl 0.003
3º Ruby 0.009 ¡Nuevo competidor!

4º PHP 0.027
5º Python 0.038

6º Java 0.143

Es decir que PHP demoró 13.5 veces más que C; Python, 12.6 veces más que Perl y Java... mejor no lo comparo con ninguno.

Fuente:
Spoiler: Mostrar
debianhackers.net

Acerca de eugeniabahit

Arquitecta de Software. Analista Programadora GLAMP y Agile Coach. Perfil completo en: http://www.debianhackers.net/autores-en-...enia-bahit
(Este mensaje fue modificado por última vez en: 17-04-2013 00:18 por KenduScript.)
17-04-2013 00:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.112
Agradecimientos dados: 763
Agradecimientos: 732 en 317 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #2
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
era evidente que C iba a ser mas rapido que los otros


igual todo depende del algoritmo que hagas (es decir, de la tarea que se esta procesando), asique no lo tomes como verdad absoluta que ese es el orden de velocidades de los lenguajes =P (igual si, php es mas lento que los otros jaja)

[Imagen: v34BEFt.gif]
17-04-2013 00:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
farragan Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Apr 2013
Mensaje: #3
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
Hola soy nuevo en algoritmo me podrian dar una referencia como es lo que va esta materia, digo esto ya que no tube ninguna experiencia programando unos amigos me aconsejaron iniciar con free pascal
17-04-2013 00:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #4
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
interesante... me acuerdo de cuando buscaba probar el "20000 factorial": http://www.utnianos.com.ar/foro/tema-20000-factorial



| funcion inicio fin |
inicio := Time millisecondClockValue.
funcion := [:a :b :fx | (a+b) > 0 ifTrue:[Transcript show: (a+b) printString; space]. (a+b) < 100000000 ifTrue: [fx value: b value: (a+b) value: fx]].
funcion value: -1 value: 1 value: funcion.
fin := Time millisecondClockValue.
Transcript cr; show: '- Tiempo: ' , (fin - inicio) printString , ' (ms)'.



(Este mensaje fue modificado por última vez en: 17-04-2013 01:09 por LeaTex.)
17-04-2013 00:45
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.112
Agradecimientos dados: 763
Agradecimientos: 732 en 317 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #5
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
(17-04-2013 00:32)farragan escribió:  Hola soy nuevo en algoritmo me podrian dar una referencia como es lo que va esta materia, digo esto ya que no tube ninguna experiencia programando unos amigos me aconsejaron iniciar con free pascal

te recomiendo mirar el subforo de sistemas

[Imagen: v34BEFt.gif]
17-04-2013 01:00
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
jonifanaderiver Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Ing. Industrial
Facultad Regional Buenos Aires

Mensajes: 218
Agradecimientos dados: 49
Agradecimientos: 64 en 43 posts
Registro en: Feb 2011
Facebook
Mensaje: #6
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
Pregunto, que el codigo en C lo hayas compilado, no hace que tenga ventaja sobre los otros que son interpretados? En el turismo ejecución digo...
17-04-2013 09:19
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Did you know that cashews come...
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 6.968
Agradecimientos dados: 112
Agradecimientos: 119 en 77 posts
Registro en: Jul 2008
Mensaje: #7
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?

Off-topic:
cuando vi el titulo del thread, te juro que me imaginé que iba a aparecer leatex a mostrar el "xxx factorial" de smalltalk
(Este mensaje fue modificado por última vez en: 17-04-2013 11:46 por Imakuni.)
17-04-2013 11:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
sebasthian777 Sin conexión
Presidente del CEIT
mi propio camino NINGA
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.923
Agradecimientos dados: 44
Agradecimientos: 23 en 20 posts
Registro en: Nov 2011
Mensaje: #8
RE: C, Perl, Java, Python, Ruby, PHP ¿quién es más veloz?
(17-04-2013 09:19)jonifanaderiver escribió:  Pregunto, que el codigo en C lo hayas compilado, no hace que tenga ventaja sobre los otros que son interpretados? En el turismo ejecución digo...

Estaba pensando lo mismo, fijate que los lenguajes que tienen construido el binario final siempre son mas rapidos, pero si nos ponemos a pensar, la idea de java es justamente esa jejeje, por ahi comer mas recursos y ser un poco mas lento, pero hacerlo mas "multiplataforma"

despues estaria bueno si con la misma maquina haces en mono =) asi se compara java con mono sobre linux =D

Lindo laburito, esta copado hacer estas cosas!!!

+10 =P

(19-11-2013 11:48).py escribió:  
(19-11-2013 11:46)sebasthian777 escribió:  
(19-11-2013 11:43).py escribió:  Terminemos Hurd.
Prefiero dejarle ese laburo a gente sin vida social y que no tenga sexo.
Cuando te casas? Asi voy armando el Gannt.
17-04-2013 13:09
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.