CPU tests

CPU tests

am 31.03.2006 15:08:00 von mgc

This is a multi-part message in MIME format.

--Boundary_(ID_p8Ie7OhfN9eLQuCgJyF9nA)
Content-type: text/plain; charset=ISO-8859-1; format=flowed
Content-transfer-encoding: 7BIT

Dear all,

I am trying to launch CPU tests on a Pentium IV Prescott 3.0 Ghz with
4Gb of RAM. I have tried some tests from distributed.net and everything
seems to be ok, although with the test attached in the email (sorry for
the size of the mail), I am experiencing some problems. As you can see
with the static flag the number generation is faster than without that
flag. I have gcc 4.0.2 under Fedora with a compiled kernel 2.6.15.

gcc test-cpu-2.c -o test-cpu-2 -lm -O3
../test-cpu-2
10 millions of rand() en 6.270 seconds (result of i.e.: 1829503671)
10 millions of sqrt(i) en 0.210 seconds (result of i.e..: 3162)
10 millions of random() en 4.260 seconds (result of i.e..: 25948597)
10 millions of log(i) en 12.510 seconds (result of i.e..: 16)

gcc test-cpu-2.c -o test-cpu-2 -lm -O3 -static
../test-cpu-2
10 millions de rand() en 0.220 seconds (result of i.e.: 1396595316)
10 millions de sqrt(i) en 0.210 seconds (result of i.e.: 3162)
10 millions de random() en 0.210 seconds (result of i.e.: 12140342)
10 millions de log(i) en 0.960 seconds (result of i.e.: 16)

Many thanks in advance

Miguel

ps: If you try the C code, you will see that I have translated the
spanish messages in the email but not in the code, hope it is easy to
understand :)

--Boundary_(ID_p8Ie7OhfN9eLQuCgJyF9nA)
Content-type: text/plain; name=test-cpu2.c
Content-transfer-encoding: 7BIT
Content-disposition: inline; filename=test-cpu2.c

#include
#include
#include
#include
#include


int hora(void) {
time_t t;
time(&t);
struct tm* petm = localtime(&t);

return petm->tm_hour;
}

int minutos(void) {
time_t t;
time(&t);
struct tm* petm = localtime(&t);

return petm->tm_min;
}

int segundos(void) {
time_t t;
time(&t);
struct tm* petm = localtime(&t);

return petm->tm_sec;
}

int main(int argc, char ** argv) {
time_t seconds;
int i, r, numero_ciclos, numero_ciclosM, t1, t2;
clock_t start, end;

// Se inicializa el generador de numeros aleatorios
time(&seconds);
srand((unsigned int) seconds);

numero_ciclos = 10000000; numero_ciclosM = numero_ciclos / 1E6;
start = clock();
for(i=0; i r = rand();
}
end = clock();
printf("%d millones de rand() en %.3f segundos (resultado de ej.: %d)\n", numero_ciclosM, (double)(end -
start)/CLOCKS_PER_SEC, r);


numero_ciclos = 10000000; numero_ciclosM = numero_ciclos / 1E6;
start = clock();
for(i=0; i r = sqrt(i);
}
end = clock();
printf("%d millones de sqrt(i) en %.3f segundos (resultado de ej.: %d)\n", numero_ciclosM, (double)(end -
start)/CLOCKS_PER_SEC, r);


numero_ciclos = 10000000; numero_ciclosM = numero_ciclos / 1E6;
start = clock();
for(i=0; i r = random();
}
end = clock();
printf("%d millones de random() en %.3f segundos (resultado de ej.: %d)\n", numero_ciclosM, (double)(end -
start)/CLOCKS_PER_SEC, r);
numero_ciclos = 10000000; numero_ciclosM = numero_ciclos / 1E6;
start = clock();
for(i=0; i r = log(i);
}
end = clock();
printf("%d millones de log(i) en %.3f segundos (resultado de ej.: %d)\n", numero_ciclosM, (double)(end -
start)/CLOCKS_PER_SEC, r);


return (0);
}


--Boundary_(ID_p8Ie7OhfN9eLQuCgJyF9nA)--
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html

Re: CPU tests

am 31.03.2006 16:28:08 von Tim Walberg

On 03/31/2006 15:08 +0200, Miguel Gonz=E1lez Casta=F1os wrote:
>> Dear all,
>>=09
>> I am trying to launch CPU tests on a Pentium IV Prescott 3.0 Ghz wi=
th=20
>> 4Gb of RAM. I have tried some tests from distributed.net and everyth=
ing=20
>> seems to be ok, although with the test attached in the email (sorry =
for=20
>> the size of the mail), I am experiencing some problems. As you can s=
ee=20
>> with the static flag the number generation is faster than without th=
at=20

That part is not surprising once you understand the dynamic linking
mechanism - it adds a small amount of overhead to every function call
into the library, because each function call is essentially an indirect
call. That said, the amount of overhead you're seeing does seem a bit
higher than I would expect (and the sqrt() case is possibly because
the compiler converts the sqrt() call into a fsqrt instruction in both
cases because of the -O3 - there is no instruction set equivalent for
the rand(), random() and log() cases).


tw

--=20
twalberg@mindspring.com
-
To unsubscribe from this list: send the line "unsubscribe linux-admin" =
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html