Ir al contenido


Foto

Benchmarking C, Java, JavaScript y FreePascal


  • Por favor identifícate para responder
3 respuestas en este tema

#1 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 26 febrero 2015 - 08:41

Me he encontrado  esta entrada muy interesante en un blog: Benchmarking C, Java, JavaScript and FreePascal que obtuvo la media de los tiempos que cada uno de los lenguajes mencionados dedicó a la generación de números primos con el algoritmo de la criba de erastotenes . Los resultados fueron:

Here are the results:
          Time (seconds)
C 3.137
Java 3.543
FreePascal 3.628
JavaScript 4.231


Me parece que valdría la pena incluir una prueba con la nueva característica de procesamiento paralelo de Delphi XE7. Aquí los códigos usados:




c
  1. void Sieve(int maxNum) {
  2.     int i, j;
  3.     char *Data;
  4.  
  5.     Data = (char *) malloc(maxNum + 1);
  6.     memset(Data, 1, maxNum+1);
  7.  
  8.     for (i=2; i<=maxNum; i++) {
  9.         if (Data[i]) {
  10.             for (j=i+i; j<=maxNum; j+=i) {
  11.                 Data[j]=0;
  12.             }
  13.         }
  14.     }
  15.  
  16.     free(Data);
  17. }



FreePascal


delphi
  1. procedure Sieve(maxNum: int32);
  2. var
  3.     Data: array of boolean;
  4.     i,j: int32;
  5. begin
  6.     SetLength( Data, maxNum+1 );
  7.     FillChar( Data[0], maxNum+1, true );
  8.  
  9.     for i := 2 to maxNum do
  10.     begin
  11.         if Data[i] then
  12.         begin
  13.             j := i+i;
  14.             while j<=maxNum do
  15.             begin
  16. Data[j] := false;
  17.                 Inc( j, i );
  18.             end;
  19.         end;
  20.     end;
  21. end;





java
  1. private static void SieveJava(int maxNum) {
  2.     int i, j;
  3.     boolean[] Data = new boolean[maxNum+1];
  4.  
  5.     for (i=2; i<=maxNum; i++) {
  6.         Data[i] = true;
  7.     }
  8.  
  9.     for (i=2; i<=maxNum; i++) {
  10.         if (Data[i]) {
  11.             for (j=i+i; j<=maxNum; j+=i) {
  12.                 Data[j]= false;
  13.             }
  14.         }
  15.     }
  16. }





javascript
  1. function SieveRegularArray(maxNum) {
  2.     var i;
  3.     var j;
  4.  
  5.     var Data = new Array();
  6.     Data.length = maxNum + 1;
  7.     for (i=2; i<=maxNum; i++) {
  8.         Data[i] = true;
  9.     }
  10.  
  11.     for (i=2; i<=maxNum; i++) {
  12.         if (Data[i]) {
  13.             for (j=i+i; j<=maxNum; j+=i) {
  14.                 Data[j] = false;
  15.             }
  16.         }
  17.     }
  18. }
  19.  
  20.  
  21.  
  22. function SieveBuffer(maxNum) {
  23.     var i;
  24.     var j;
  25.  
  26.     var Data = new Buffer(maxNum + 1);
  27.     Data.fill(1);
  28.  
  29.     for (i=2; i<=maxNum; i++) {
  30. if (Data[i]) {
  31.             for (j=i+i; j<=maxNum; j+=i) {
  32. Data[j] = 0;
  33.             }
  34.         }
  35.     }
  36. }
  37.  
  38.  
  39.  
  40. function SieveTypedArray(maxNum) {
  41.     var i;
  42.     var j;
  43.  
  44.     var Data = new Uint8Array(maxNum + 1);
  45.     for (i=2; i<=maxNum; i++) {
  46.         Data[i] = 1;
  47.     }
  48.  
  49.     for (i=2; i<=maxNum; i++) {
  50.         if (Data[i]) {
  51.             for (j=i+i; j<=maxNum; j+=i) {
  52.                 Data[j] = 0;
  53.             }
  54.         }
  55.     }
  56. }


 
  • 0

#2 Nikolas

Nikolas

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 604 mensajes
  • LocationMar del Plata / Bs As / Argentina

Escrito 26 febrero 2015 - 07:37

¿porque es más rapido c?
  • 0

#3 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 mensajes
  • LocationCali, Colombia

Escrito 27 febrero 2015 - 06:45

Valdría la pena probarlo con Delphi ya que uno de los argumentos más importantes es que los lenguajes compilados son más rápidos que los interpretados.

Saludos.
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 27 febrero 2015 - 09:03

Valdría la pena probarlo con Delphi ya que uno de los argumentos más importantes es que los lenguajes compilados son más rápidos que los interpretados.

Saludos.


Pienso lo mismo, añádele además que con Delphi puedes hacer procesamiento paralelo.
  • 0




IP.Board spam blocked by CleanTalk.