Ja que todos estavam fazendo o seu, resolvi eu tambem fazer meu teste.
. Não utilizei nenhum tipo de otimização.
. Não utilizei relógio, acho mais fácil calcular o tempo dentro do próprio programa.
. Não peguei nenhum programa listado aqui anteriormente, até porque existiam aqui alguns que nem compilavam ou tinha excessões que não eram tratadas.
Os dados que encontrei estão ai e espero que ajude a quem precise desta informação.
Java e C são linguagens de programação que tem seus devidos propósitos. Ao invés desta discução que ja dura cerca de nove paginas e não chega a lugar nenhum, porque não discutir quais propósitos que uma ou outra melhor se aplica.
Eu pelo menos não pretendo deixar de programar em uma linguagem ou outra por motivo de uma deficiencia encontrata em uma ou outra linguagem.
Guerra santa todos sabemos como acabam.
Sujestão:
Vamos aproveitar o forum para avaliar um código, talvez o proposto abaixo ou outro qualquer (que compile), vamos executar cada um em nossa própria maquina e postar os resutados, se assim vocês ficarem felizes, vamos controlar o tempo via o próprio programa, sabe como é não confio em relogio que eu não estou vendo.
Então quem sabe depois postamos os resultados, geramos uma planilha, quem sabe até usamos a do exell ou calc (openoffice) e chegamos a um resultado mais preciso.
Mesmo assim todos continuarão trabalhando e usando suas linguagens para seus devidos propósitos e então haverá paz na terra aos programadores de boa vontade novamente.
Agradecimentos especiais :
A Galera la do trabalho, que apesar desta guerra santa consegue tocar as coisas na esportiva e cumprir seus prazo cada um com sua especialidade e Tbem ao Cassio que deu uma força com um código legal para o teste.
Uma observação quanto ao propósito de uso de uma linguagem:
O forum do portaljava que tem mensagens como “o php nunca vai ser tão bom quanto o java” é feito em PHP
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LIMIT 200000
static void qsort_b(int *c,int start,int end){
int comp = c[start], tmp;
int i = start,j = end + 1;
if(end <= start) return;
for(;;){
do i++; while(i<end && c[i]<comp);
do j--; while(j>start && c[j]>comp);
if(j <= i) break;
tmp = c[i];
c[i] = c[j];
c[j] = tmp;
}
c[start] = c[j];
c[j] = comp;
qsort_b(c,start,j-1);
qsort_b(c,j+1,end);
}
static void qsort_a(int *c){
printf("Ordenando...\n");
qsort_b(c,0,LIMIT-1);
}
int main(int argc, char **argv){
int i;
int arr[LIMIT];
time_t stm, etm;
for(i=0;i<LIMIT;i++){
arr[i] = rand();
}
printf("Programa Carregado... \n");
time(&stm);
qsort_a(arr);
time(&etm);
printf("Time = %ld\n", (etm -stm) );
/*
for(i=0;i<LIMIT;i++)
printf("%d ", arr[i]);
printf("\nDone ;-)\n");
*/
return 0;
}
public class pSimpleQuicksort {
private static final int LIMIT = 200000;
public static void qsort(Comparable[] c,int start,int end){
if(end <= start) return;
Comparable comp = c[start];
int i = start,j = end + 1;
for(;;){
do i++; while(i<end && c[i].compareTo(comp)<0);
do j--; while(j>start && c[j].compareTo(comp)>0);
if(j <= i) break;
Comparable tmp = c[i];
c[i] = c[j];
c[j] = tmp;
}
c[start] = c[j];
c[j] = comp;
qsort(c,start,j-1);
qsort(c,j+1,end);
}
public static void qsort(Comparable[] c){
System.out.println("Ordenando...");
qsort(c,0,c.length-1);
}
public static void main(String[] args){
int i;
Integer[] arr = new Integer[LIMIT];
for(i=0;i<arr.length;i++){
arr[i] = new Integer((int)(Math.random()*99));
}
System.out.println("Programa Carregado... \n");
double time1 = System.currentTimeMillis();
pSimpleQuicksort.qsort(arr);
double time2 = System.currentTimeMillis();
System.out.println("Time = " + (time2 -time1) );
/*
for(i=0;i<arr.length;i++)
System.out.print(arr[i]+" ");
System.out.println("\nDone ;-)");
*/
}
}
Maquina : Sun-Blade-100
SO: SunOS 5.9
Cpu Type: sparcv9
FPU Type: sparcv9
Mhz: 502
Memoria: 256MB
for ((i=0; i<5; i++)) ; do
> time ./pSimpleQuicksort
> done
Programa Carregado…
Ordenando…
Time = 0
real 0m0.478s
user 0m0.360s
sys 0m0.020s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.487s
user 0m0.370s
sys 0m0.020s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.488s
user 0m0.390s
sys 0m0.010s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.419s
user 0m0.390s
sys 0m0.020s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.470s
user 0m0.370s
sys 0m0.010s
[ tmp]$ java131
[ tmp]$ javac pSimpleQuicksort.java
[ tmp]$ for ((i=0; i<5; i++)) ; do time java pSimpleQuicksort; done
Programa Carregado…
Ordenando…
Time = 1007.0
real 0m2.092s
user 0m1.680s
sys 0m0.250s
Programa Carregado…
Ordenando…
Time = 1025.0
real 0m2.080s
user 0m1.730s
sys 0m0.240s
Programa Carregado…
Ordenando…
Time = 979.0
real 0m1.990s
user 0m1.710s
sys 0m0.210s
Programa Carregado…
Ordenando…
Time = 971.0
real 0m1.979s
user 0m1.630s
sys 0m0.280s
Programa Carregado…
Ordenando…
Time = 976.0
real 0m2.000s
user 0m1.630s
sys 0m0.260s
[ tmp]$ java142
[ tmp]$ javac pSimpleQuicksort.java
[ tmp]$ for ((i=0; i<5; i++)) ; do time java pSimpleQuicksort; done
Programa Carregado…
Ordenando…
Time = 950.0
real 0m2.216s
user 0m1.680s
sys 0m0.150s
Programa Carregado…
Ordenando…
Time = 916.0
real 0m1.923s
user 0m1.710s
sys 0m0.130s
Programa Carregado…
Ordenando…
Time = 949.0
real 0m1.986s
user 0m1.690s
sys 0m0.150s
Programa Carregado…
Ordenando…
Time = 927.0
real 0m1.960s
user 0m1.750s
sys 0m0.120s
Programa Carregado…
Ordenando…
Time = 992.0
real 0m2.000s
user 0m1.750s
sys 0m0.170s
[ tmp]$ java150
[ tmp]$ javac pSimpleQuicksort.java
Note: pSimpleQuicksort.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
[ tmp]$ for ((i=0; i<5; i++)) ; do time java pSimpleQuicksort; done
Programa Carregado…
Ordenando…
Time = 1204.0
real 0m3.030s
user 0m2.140s
sys 0m0.190s
Programa Carregado…
Ordenando…
Time = 1212.0
real 0m2.439s
user 0m2.140s
sys 0m0.160s
Programa Carregado…
Ordenando…
Time = 1153.0
real 0m2.370s
user 0m2.100s
sys 0m0.190s
Programa Carregado…
Ordenando…
Time = 1168.0
real 0m2.389s
user 0m2.050s
sys 0m0.220s
Programa Carregado…
Ordenando…
Time = 1153.0
real 0m2.420s
user 0m2.050s
sys 0m0.220s
Maquina : i386
SO: Linux (kernel 2.4.18-3)
Cpu Type: Intell Pentium II
FPU Type: Intell Pentium II
Mhz: 350
Memoria: 256MB
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 5
model name : Pentium II (Deschutes)
stepping : 2
cpu MHz : 349.201
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 mmx fxsr
bogomips : 696.32
[pleao@Hipolitta tmp]$ for ((i=0; i<5; i++)) ; do time ./pSimpleQuicksort ; done
Programa Carregado…
Ordenando…
Time = 0
real 0m0.370s
user 0m0.340s
sys 0m0.000s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.362s
user 0m0.330s
sys 0m0.000s
Programa Carregado…
Ordenando…
Time = 1
real 0m0.364s
user 0m0.330s
sys 0m0.020s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.364s
user 0m0.350s
sys 0m0.010s
Programa Carregado…
Ordenando…
Time = 0
real 0m0.366s
user 0m0.350s
sys 0m0.000s
[pleao@Hipolitta tmp]$ for ((i=0; i<5; i++)) ; do time java pSimpleQuicksort ; done
Programa Carregado…
Ordenando…
Time = 1012.0
real 0m2.335s
user 0m2.080s
sys 0m0.120s
Programa Carregado…
Ordenando…
Time = 1045.0
real 0m2.370s
user 0m2.180s
sys 0m0.080s
Programa Carregado…
Ordenando…
Time = 975.0
real 0m2.270s
user 0m2.060s
sys 0m0.070s
Programa Carregado…
Ordenando…
Time = 1730.0
real 0m3.070s
user 0m2.630s
sys 0m0.330s
Programa Carregado…
Ordenando…
Time = 957.0
real 0m2.320s
user 0m2.160s
sys 0m0.030s
[pleao@Hipolitta tmp]$ java -version
java version “1.5.0_02”
Java™ 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09)
Java HotSpot™ Client VM (build 1.5.0_02-b09, mixed mode, sharing)[