Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: zupervaca en 01 de Marzo de 2005, 11:14:45 PM

Título: Velocidad
Publicado por: zupervaca en 01 de Marzo de 2005, 11:14:45 PM
 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  
Título: Velocidad
Publicado por: Zaelsius en 01 de Marzo de 2005, 11:40:05 PM
 
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 resultados

Mi 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)
Título: Velocidad
Publicado por: BeRSeRKeR en 01 de Marzo de 2005, 11:43:17 PM
 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
Título: Velocidad
Publicado por: zupervaca en 02 de Marzo de 2005, 12:22:31 AM
 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