Oggi ho eseguito un semplice test per confrontare la velocità tra java e c - un semplice ciclo che fa incrementare un intero "i" da 0 a 2 miliardi.Java più veloce di C
Mi aspettavo davvero che il linguaggio c fosse più veloce di java. Sono rimasto sorpreso dal risultato:
il tempo impiegato in secondi per Java: circa. 1,8 secondi
il tempo impiegato in secondi per c: circa. 3.6 secondi.
NON penso che java sia un linguaggio più veloce, ma NON capisco neanche perché il ciclo è due volte più veloce di c nei miei programmi semplici?
Ho effettuato una misstake cruciale nel programma? O il compilatore di MinGW è mal configurato o qualcosa del genere?
public class Jrand {
public static void main (String[] args) {
long startTime = System.currentTimeMillis();
int i;
for (i = 0; i < 2000000000; i++) {
// Do nothing!
}
long endTime = System.currentTimeMillis();
float totalTime = (endTime - startTime);
System.out.println("time: " + totalTime/1000);
}
}
IL C-PROGRAMMA
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main() {
clock_t startTime;
startTime = clock();
int i;
for (i = 0; i <= 2000000000; i++) {
// Do nothing
}
clock_t endTime;
endTime = clock();
float totalTime = endTime - startTime;
printf("%f", totalTime/1000);
return 0;
}
Il il ciclo è probabilmente ignorato in Java. Prova a fare qualcosa di significativo nel ciclo, come aggiornare una somma e stamparla dopo il ciclo. Si veda anche [questa discussione] (http://stackoverflow.com/questions/504103/how-do-i-write-a-correct-micro-benchmark-in-java) –
Optimizer. Come disse Sanjay. – Devolus
Hai attivato le ottimizzazioni per la compilazione C?Probabilmente non l'hai fatto perché altrimenti il tuo codice C dovrebbe tornare a 0 secondi. – Mysticial