06-05-2011, 03:57 PM
Salve,
ho realizzato questo facile benchmark per CPU in C. L'algoritmo è facile: ricerca i numeri primi in base al numero massimo fornito dall'utente in ingresso, li stampa a video e li conta.
Alla fine, stampa il tempo di esecuzione della ricerca e il numero di primi trovati.
Ecco il codice:
Posterò anche il .exe già compilato a breve. Il codice non è multithreading, quindi, sia che voi abbiate un quad core o un sistema a singolo processore, il risultato non varierà in funzione del numero di core...
Saluti.
ho realizzato questo facile benchmark per CPU in C. L'algoritmo è facile: ricerca i numeri primi in base al numero massimo fornito dall'utente in ingresso, li stampa a video e li conta.
Alla fine, stampa il tempo di esecuzione della ricerca e il numero di primi trovati.
Ecco il codice:
Codice PHP:
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
int isPrime( int );
int main()
{
struct timeval inizio, fine;
long int time;
int maxPrime, c = 2, count = 0;
char choice[2];
do
{
printf( "Inserisci il numero massimo entro il quale calcolare i numeri primi\t>" );
scanf( "%d", &maxPrime );
printf( "\n" );
gettimeofday( &inizio, 0 );
while ( c < maxPrime )
{
if( isPrime( c ) ){
printf( "%d\n", c );
count++;
}
c++;
}
gettimeofday( &fine, 0 );
time = ((fine.tv_sec - inizio.tv_sec) * 1000000 + (fine.tv_usec - inizio.tv_usec)) / 1000;
printf( "\n" );
printf( "Tempo d'esecuzione:\t%li millisecondi\n",time );
printf( "I numeri primi sono %d.\n", count );
printf( "Ripetere l'esecuzione? Y/N\t" );
scanf( "%s", choice );
}while( choice[0] != 'N' && choice[0] != 'n' );
printf( "\n" );
system( "PAUSE" );
return EXIT_SUCCESS;
}
int isPrime( int numero )
{
int i = 2, isPrimeFlag = 1;
while( isPrimeFlag == 1 && i < numero )
{
if( numero % i == 0 )
isPrimeFlag = 0;
i++;
}
return isPrimeFlag;
}
Posterò anche il .exe già compilato a breve. Il codice non è multithreading, quindi, sia che voi abbiate un quad core o un sistema a singolo processore, il risultato non varierà in funzione del numero di core...
Saluti.