Luego de varias discusiones con mi voz interna, (a pesar de la creencia urbana los programadores si tenemos alma), he logrado reducir mi lista a dos lenguajes, C# y Python. El primero un lenguaje semi-compilado, ya que el compiler traduce el codigo fuente a un lenguaje intermedio que luego es interpretado por la maquina virtual de .Net (o Mono). Y el segundo es un lenguaje de tipado dinamico e interpretado.
Cual de ellos elegir a la hora de desarrollar este software que me han asignado? Es C# mas rapido que Python, o deberia reformular la pregunta, es .Net (c#) mas rapido que python?
Como testear esto? Fibonacci? Esta funcion en python calcula los N (limite) primeros numeros en la secuencia Fibonacci.
#!/usr/bin/python
def fibonacci(limite):
valores = []
a, b = 0,1
while valores.__len__() < limite:
valores.append(b)
a, b = b, a+b
return valores
if __name__ == "__main__":
print fibonacci(100)
time:
real 0m0.023s
user 0m0.012s
sys 0m0.008s
ahora, la misma funcion en C#, compilada en Mono (linux my friends, deberian usarlo, te cambia la vida)
using System;
using System.Collections;
namespace Fibonacci
{
class MainClass
{
public static void Main(string[] args)
{
int limite = 50;
ulong[] valores = new ulong[limite];
ulong a = 0;
ulong b = 1;
int index = 0;
while ( index < limite)
{
valores[index] = b;
a = b;
b = a + b;
index = index + 1;
}
for(int i=0;i < limite;i++)
{
Console.Write(valores[i] + " ");
}
}
}
}
time:
real 0m0.114s
user 0m0.032s
sys 0m0.016s
C#(0.162) vs Python(0.043)
Obviamente este pequeño test es absolutamente trivial, pero no me impide elegir a Python :)
Saludos!
1 comentarios:
Que codigo C# tan poco optimizado
Publicar un comentario en la entrada