Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Velocidad

Iniciado por zupervaca, 01 de Marzo de 2005, 11:14:45 PM

« anterior - próximo »

zupervaca

 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  

Zaelsius

 
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)

BeRSeRKeR

 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 te buscan en nombre de la ley, huye en nombre de la libertad!!

zupervaca

 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






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.