hola a todos, despues de leer muchos post etc etc me sigo quedando con la duda de si el c# es tan lento como he leido en muchos sitios, yo nunca lo he tocado por lo que puedo decir que sera mas lento por alguna demo que vi, pero que tampoco es de fiar, bueno, la idea es la siguiente el codigo fuente que pongo acontinuacion es c, si alguien lo pasa a c# que lo ponga y asi podemos todos comprobar en nuestras propias carnes y ordenadores la velocidad de cada uno, ¿que os parece? ;)
#include
#include
#include
void main()
{
printf( "pulsa una tecla\n");
getch();
printf( "test iniciado\n");
clock_t inicio = clock();
int i, j = 1, k = 2, l = 4;
for( i = 0; i < 1000000000; i++ )
{
j = j * k +1;
k = k * l +2;
l = l * j +4;
}
clock_t final = clock();
clock_t total = final -inicio;
printf( "test finalizado\n");
char sz[256];
sprintf( sz, "Tiempo: %i - KK: %i, %i, %i\n", final -inicio, j, k, l );
printf( sz );
getch();
}
PD: Las formulas dentro del for las pongo para que el compilador no lo omita y asi haga el for por "webs" :D
Cita de: "zupervaca"¿que os parece? ;)
Que es un benchmark bastante pobre :rolleyes:
Aquí hay uno, con código fuente si no te fias de los resultadosMi conclusión:
Lo más importante es el compilador que uses, Visual C++ es el rey! xD... Como dato adicional, ahora mismo Mono corre los programas a la mitad de velocidad que en la plataforma .Net original, aun les queda mucho que optimizar.
Esperando ansioso al GCC 4.0 y la autovectorización, con suerte este verano con Tiger (genial)
Estos son mis resultados:
C: Tiempo: 9593 - KK: 1860527159, -1616933214, 11047796
C#: Tiempo: 9095 - KK: 1860527159, -1616933214, 11047796
Para compilar la aplicación C he utilizado el Visual Studio .NET 2003, por supuesto en modo release. Para la aplicación C# he utilizado el Visual C# Express 2005 Beta.
Este es el código:
#region Using directives
using System;
using System.Runtime.InteropServices;
#endregion
namespace CvsCSharp
{
class Program
{
[System.Security.SuppressUnmanagedCodeSecurity]
[DllImport("winmm.dll")]
public static extern int timeGetTime();
static void Main(string[] args)
{
Console.WriteLine("\nPulsa una tecla para iniciar el test...");
Console.ReadKey();
Console.WriteLine("Procesando...");
int init = timeGetTime();
int i, j = 1, k = 2, l = 4;
for (i = 0; i < 1000000000; i++)
{
j = j * k + 1;
k = k * l + 2;
l = l * j + 4;
}
int end = timeGetTime();
Console.WriteLine("Tiempo: {0} - KK: {1}, {2}, {3}", end - init, j, k, l);
Console.WriteLine("Pulsa una tecla para terminar...");
Console.ReadKey();
}
}
}
De todas formas no sé hasta qué punto será fiable esta prueba.
Saludos.
PD: en un segundo test me ha dado:
C: Tiempo: 9156 - KK: 1860527159, -1616933214, 11047796
C#: Tiempo: 9026 - KK: 1860527159, -1616933214, 11047796
si el visual c++ para mi tambien es el mejor, la verdad es que el test es muy cutre y es normal que varie el resultado arriba/abajo ya que un simple movimiento de raton o tirada de disco duro cambia el resultado :D
mis resultados fueron:
c++ : 9105 / 9225
c# : 11100 / 11125
para mi ordenador que es un piii1200 (muy humilde pa las fechas que corremos) se nota un pelin :huh:
los dos los compile con el .net 2002