Einfacher Prozessorbenchmark

Aus Labor für Echtzeitsysteme

Wechseln zu: Navigation, Suche

Einfache, nicht optimierte Berechnung von Primzahlen (reine Integerrechnung):

Der PXA270 skaliert ganz grob mit der Taktfrequenz, er ist überschlagsmässig demnach um den Faktor 4 bis 6 langsamer, als ein aktueller PC (Einprozessorsystem). Der Benchmark darf natürlich nicht all zu ernst genommen werden; die im Test verwendeten Desktop-Rechner hatten allesamt noch andere Aufgaben zu übernehmen. Der Athlon-Rechner wird als 64Bit-System genutzt.


Inhaltsverzeichnis

[bearbeiten] PXA270, 0,4 GHz (gumstix)

Anzahl Primzahlen Berechnungszeit Bemerkungen
20.000 68s gcc -O2
20.000 92s ohne -O2
50.000 460s gcc -O2
50.000 627s ohne -O2


[bearbeiten] Pentium M, 1,4 GHz

Anzahl Primzahlen Berechnungszeit Bemerkungen
20.000 17s gcc -O2
20.000 16s ohne -O2
50.000 113s gcc -O2
50.000 106s ohne -O2


[bearbeiten] Athlon 3200+, 2,0 GHz

Anzahl Primzahlen Berechnungszeit Bemerkungen
20.000 39s gcc -O2
20.000 43s ohne -O2
50.000 271s gcc -O2
50.000 304s ohne -O2


[bearbeiten] prim.c

Die Messungen wurden folgendermassen durchgeführt:

quade@ezs-mobil:/tmp/primzahl$ ./prim | grep "count: 50000"
Primzahl: 611957 count: 50000 - time: 106
<CTRL>C

Der Quellcode:

#include <stdio.h>
#include <time.h>

int main( int argc, char **argv )
{
        unsigned long candidate, factor;
        int found, count=0;
        time_t t_start, t2;

        t_start=time(NULL);
        for( candidate=3; candidate <= (unsigned long)(-1); candidate+=2 ) {
                found=1;
                for( factor=3; factor<=(candidate/2); factor+=2 ) {
                        if(((candidate/factor)*factor)==candidate ) {
                                found=0;
                                break;
                        }
                }
                if( found ) {
                        count++;
                        t2=time(NULL);
                        printf("Primzahl: %ld count: %d - time: %ld\n",
                                candidate,
                                count,
                                t2-t_start);
                }
        }
        return 0;
}
Persönliche Werkzeuge