<- back

 

Mein eigenes kleines Benchmark-Programm

Ursprünglich einfach zum Üben gedacht entstand dieses kleine Programm.


Zweck:

Benchmarking von x86-Prozessoren zur Darstellung der tatsächlich für den Benutzer zur Verfügung stehenden Performance seines Windows-Rechners.

^ back up


Hintergrund:

Viele aktuelle Windows-PCs (namentlich die XP-Versionen) sind selbst nach einer frischen Installation schon mit einer Menge von Hintergrund-Tätigkeiten beschäftigt. Wer mal (unter Windows 2000/XP oder höher) seinen Task-Manager per Strg-Alt-Entf oder per Rechts-Klick auf die Uhr in der Taskleiste startet und dort die Liste der laufenden "Prozesse" betrachtet, wird feststellen, dass sich meist mindestens ein Dutzend sogenannter Tasks dort tummeln. Neben einer ganze Batterie von internen Verwaltungsroutinen sind dort auch die einzelnen Programmteile von Virenscannern, Firewalls, Brennprogrammen, hardware-unterstützenden Tools (Grafik-/Soundkarten) usw. gelistet. Alle diese belasten den Prozessor mehr oder weniger stark und mehr oder weniger dauerhaft. Damit sinkt natürlich auch die dem Benutzer für seine eigentlichen Programme zur Verfügung stehende Prozessor-Leistung. Selbst eine "Grundlast" von zusammen vielleicht 5 % eines aktuellen 3 GHz-Rechners ist ja umgerechnet schon ein voll ausgelasteter 150MHz-Pentium 1 !!!

Wenn man sich vorstellt, das die meisten dieser Hintergrund-Aktivitäten eigentlich nur für Kommunikationszwecke zuständig sind (RPC, Virenscanner, Firewalls, SNMP, tcpsvc, ...), dann kann sich ja mal jemand hinsetzen und allein den Energie-Verbrauch aller auf der Erde täglich laufenden Rechner nur für diese Grundlast zusammenzurechnen ! Aber Energie ist ja billigt, kümmert ja keinen !

^ back up


Arbeitsweise:

In diesem Programm werden die vom Computer benötigten Zeiten für die Abarbeitung von Schleifen gemessen und in einer Datei zusammengefasst. Dieses Programm ist eine Consolen-Anwendung, es verzichtet absichtlich auf den ganzen GUI-Overhead (auch Schnickschnack genannt), um den Prozessor nicht zusätzlich zu belasten.

Es werden für die in Borland Delphi* zur Verfügung stehenden numerischen Datentypen Schleifen mit relativ simplen iterativen Berechnungen durchlaufen.

Dabei wird nach Datentypen unterschieden in die Festkomma-Typen:

Integer, Byte, Shortint, word, smallint, cardinal, longword, longint und comp**

sowie in die Fließkomma-Typen:

real, real48, single, double, extended und currency.

Der Typ Int64 als 64bit-Integer ist wegen der ungleich längeren Bearbeitung seiner Schleifen durch die Prozessoren als eigene Klasse erfasst.

nähere Erläuterungen dazu bitte ich der Delphi-Dokumentation zu entnehmen

 

Für die Ganzzahl-Typen inkl. Int64 werden 100.000.000 Schleifen der Art

vinteger:=high(integer) div 2;
vinteger:=(vinteger) + (vinteger shr 1);
vinteger:=(((vinteger div 5) shr 1)*2) div 4;

und für die Gleitkomma-Typen werden 15.000.000  Schleifen der Art

vreal:=sin(vreal)/Pie*Eul+cos(vreal*exp(Eul/pie));

durchlaufen und die jeweilige Zeit gemessen.

Diese Zeit wird mit vorher ermittelten Daten wie Prozessortyp, aktueller Geschwindigkeit in MHz (ohne PRating), Betriebssystem usw. in eine Datei gespeichert, die ich bisher mit einer Tabellenkalkulation ausgewertet habe.

Über die Sinnhaftigkeit der Schleifen muss nicht groß philosophiert werden, der Prozessor soll nur eine Zeitlang eine bestimmte Aufgabe mit einem bestimmten Datentyp durchführen.

Dabei lege ich eher Wert auf den Vergleich von Prozessortypen und deren Effizienz als auf die tatsächliche "Power". Daher werden bei der Auswertung auch die ermittelten Zeiten mit der Prozessorgeschwindigkeit multipliziert und nur dieses Ergebnis zum Vergleich herangezogen.

Takte/Zeit [MHz] * verbrauchte Zeit [sek] = benötigte Takte []

Ein höher getakteter Rechner sollte dabei weniger Zeit brauchen als z.B. ein stromsparender Notebook-Prozessor.

Anmerkungen:

a) Da keine größeren Datenmengen bewegt werden, ist die Größe der Prozessorcaches ohne größere Bedeutung.

b) Da nur die Geschwindigkeit für die normalen bisher verfügbaren Anwendungen getestet werden soll, läuft dieser Benchmark singlethreaded, d.h. Hyperthreading, Mehr-Prozessor-Rechner oder die Multi-Core-Prozessoren helfen in diesem Test nur insofern, als dass sie andere Aufgaben auf andere Recheneinheiten umleiten können und somit den getesteten Kern entlasten.

^ back up


Ergebnisse:

Ich habe diesen Test über die mir zugänglichen Rechner laufen lassen, waren auf diesen Rechnern unterschiedliche Betriebssysteme installiert, habe ich mir die Chance natürlich nicht entgehen lassen... :)

Des weiteren habe ich aus meinen Beiträgen unter de.comp.lang.delphi.misc: Prozessor-Benchmark die Zweite und unter de.comp.hardware.cpu+mainboard.misc:Prozessor-Benchmark zum Mitmachen noch einige weitere Ergebnisse erhalten und eingepflegt. BESTEN DANK fürs Mitmachen!

Im Test waren bis jetzt ausschließlich gängige Desktop und Mobile-Typen.

Zuerst die Grafik der einzelnen, über die MHz gewichteten Zeiten:

         

     Das auf der Z-Achse dargestellte Ergebnis ist einheitenlos, kleinere Ergebnisse sind besser !

     größeres Bild

Die Angabe in der X-Achse enthält Proz.-Typ, tatsächliche MHz und Betriebssystem. Sortiert wurde nach der durchschnittlichen Performance über alle Festkomma-Zahlen. Interessant sind vor allem die originären und gebräuchlichen Datentypen real, integer und neuerdings Int64, alle sind in Blautönen dargestellt.

Erkenntnisse hier:

-    zwischen den 32bit und den 64bit-Datentypen (comp + Int64) gibt es einen deutlichen Bruch, höchstwahrscheinlich weil unter Windows 32bit mit 32-bit Compiler

-    gerade bei den Fließkomma-Werten wird deutlich: am besten (ganz vorn) der Core2, dann Pentium M und ihre Vorgänger Pentium III und II und auch der Celeron 850MHz mit Coppermine-Kern, dann die Athlon und dann mit einem deutlichen Bruch die Pentium4-Familie mit den Kernen Northwood und Prescott

 

Zusammengefasst als MHz-gewichteten Durchschnitt über die einzelnen Datentypen:

         

     auch hier gilt: kleinere Werte sind besser, die Werte sind ohne Einheit, Hinweis: obere Achse 32bit-Ergebnisse und 64bit auf der unteren Achse !

größeres Bild

Auch wenn ich dafür gelyncht werde: eine Analyse verrät vor allem eines:

Neuere AMDs sind im Fließkomma-Bereich schneller (effizienter) als Prozessoren Pentium 3 + M mit Coppermine-Kernen und dessen Nachfolgern Banias und Dothan, gefolgt von den Pentium 4 welche logischerweise die Pentium4-Mobile schlagen. Schlusslicht bildet der 2400 MHz Celeron auf Sockel 478. (Der Mobile Pentium 4 ist mehrmals mit unterschiedlichen Compiler-Einstellungen getestet worden, die vergleichbare Version ist die mit dem Kürzel SmashK hinten.)

Im Ganzzahl-Bereich ist der neue Core2 6300 ganze 16% schneller als die bisher dominierenden PentiumM, gefolgt den älteren Pentium-Typen und den Athlons, die wiederum von dem neueren Athlon X2 3800+ angeführt werden und gefolgt von der Pentium4-Familie mit den PentiumD an ihrer Spitze.

Beim 64bit-Vergleich sind die neuesten Fortschritte ebenfalls deutlich. Ganz vorn der Athlon64 X2 und der Sempron vor den AthlonXP, dann in Schritten der Core2 und der PentiumM/3 und abgeschlagen Pentium4/D. Auffällig ist die schwache Performance des Pentium 4 und des Pentium D. Auch wenn der Athlon X2 über 10% gegenüber dem Athlon XP und der Core2 fast 6% gegenüber dem PentiumM zugelegt haben, hätte ich hier im 64bit-Bereich doch deutlichere Fortschritte erwartet.

Was im oberen Diagramm kaum sichtbar ist: Der Pentium II ist einmal unter Windows 95 C und einmal unter ReactOS 0.3beta (Live) getestet worden. (Wer es nicht kennt: ReactOS ist der einzige mir bekannte fremdentwickelte Windows-Ableger.) ReactOS ist schneller ! (Aber wohl dadurch, dass dort bisher kaum Windows-interner Verwaltungskram wie plug 'n pray, Mediensteuerung, Kommunikationsbackground usw. eingebaut ist.) Weiter so!

 

Und das Ganze noch einmal zusammengefasst als Durchschnitt über Alles:

größeres Bild

Na? Wer hätte das gedacht? Trotz des deutlichen Fortschritts des Core 2 gegenüber seinem Vorfahren PentiumM können sich die 64bit-AMDs behaupten!

(Der Cel700 ziemlich weit unten ist etwas aus der Art geschlagen, hier dürfte die Messung gestört worden sein.)

Weitere Erkenntnisse:

Eins noch:

Die Festkomma-Datentypen lassen sich nach Wertebereichen zu Paaren zusammensortieren. Es gibt immer einen Typ mit und einen ohne Vorzeichen.

Größe in bit Wertebereich Typ ohne Vorzeichen Typ mit Vorzeichen
8 0..255 bzw. -128..127 Byte Shortint
16 0..65.535 bzw. -32.768..32.767 Word SmallInt
32 0..4.294.967.295 bzw. -2.147.483.648..2.147.483.647 LongWord LongInt

LongInt entspricht vom Wertebereich her dem originärem "Integer".

Man nehme also die Ergebnisse von oben und vergleiche die Partner untereinander (mit/ohne Vorzeichen, z.B. Ergebnis "ShortInt"/Ergebnis "byte"), bilde den Durchschnitt der 32bit-Paare und vergleiche diese untereinander. Ergebnisse wie folgt:

auch hier gilt: kleinere Werte sind besser, die Werte sind ohne Einheit

größeres Bild

Erkenntnis: Vorzeichenbehaftete Datentypen lassen sich schlechter berechnen als solche ohne Vorzeichen, Theorie somit empirisch wohl bewiesen. Im 32bit-Bereich sind die Athlon schneller als die Pentium 3 (bzw. Nachfolger) und die Pentium 4-Familie.

Ein 64bit-Vergleich ist aufgrund eines fehlenden Datentyps 64bit-Festkomma ohne Vorzeichen nicht möglich.

(Der erste PentiumM ist etwas aus der Art geschlagen, er bringt im 32bit-mit/ohne Vorzeichen, also LongInt/LongWord einen Wert kleiner 1, der aber anzuzweifeln ist, wie seine Brüder beweisen.)

^ back up


FAZIT:

So viel sind MHz wert!

Die neuen AthlonX2/Sempron und Core2/PentiumD haben Fortschritte erbracht, wenn auch recht bescheidene. Der von Aldi erstandene Medion 2,8 GHz-Pentium4-Mobile Laptop und der Pentium 4/D sind deutlich langsamer als die Pentium M/3 und die Athlons, welche beide mit deutlich niedrigeren tatsächlichen Taktraten arbeiten.

Die Athlons mit ihren zwei Fließkomma-Ausführungseinheiten und der kürzeren Prozessor-internen Verarbeitungs-"Kette" (Pipeline) rennen im Fließkomma-Bereich den Pentium4/D auf und davon. Der Core2 und der Pentium M sind im 32bit-Festkomma-Bereich unschlagbar. Die Athlon weisen die beste durchschnittliche Performance auf.

bekannte Schwachstellen:

- dies ist ein rein synthetischer Benchmark und hat für die tägliche Arbeit am Rechner nur eine eingeschränkte Aussagekraft

- Es fehlen noch Ergebnisse von Core Duo und allen Mobile-Athlon-Typen und sämtlichen Serverprozessoren wie auch aussagekräftige Vergleiche zwischen Betriebssystemen wie Linux und Co.

- die Schleifen-Berechnungen sind eingeschränkt aussagefähig, Ergebnisse von Fließ- und Festkomma sind nicht vergleichbar

 

 

mögliche und unmögliche Erweiterungen:

-    größere Datenmengen, um auch den Einfluß der Caches zu erfassen -> erledigt, siehe zweiter Benchmark

-    optionales Multi-Threading, um die Effizienz der internen Lastverteilung zu ermitteln

-    schön wäre auch die irgendwie geartete Erfassung der Leistungsaufnahme des Prozessors im Moment der  Verarbeitung, um Rückschlüsse auf die Energieeffizienz zu erhalten

-    eine Linux-Version, die ich aufgegeben habe, da es mir bisher nicht möglich war, ein mit Kylix bestücktes, lauffähiges Linux-System zu installieren...

^ back up


Und jetzt kommt Ihr!

Und jetzt kommt ihr ins Spiel, ich hätte gerne eure Ergebnisse!

Speziell alle neuen Prozessoren wie Core/Core 2/Duo bzw. Quad, PentiumD, Athlon64/X2/X3/X4, Phenom aber auch Opteron, Itanium (wohl nur 32bit-Modus möglich), XEON und VIA sind gern gesehen. Ich nehme unbedingt alle verfügbaren Ergebnisse!

Hier gibt's mein Benchmarktool zum Download, zieht ihn euch runter, lasst ihn durchlaufen und mailt mir die Datei an Benchmark@MikeBeh.de.

Ich werde dann die gesammelten Werke zusammenfassen und hier veröffentlichen.

Dabei setze ich auf eure Fairness gegenüber mir (bitte keine Viren, Spam usw. und keine Massenmails, sowie keine Veränderung des Programms) und gegenüber den Anderen (keine geschönten Ergebnisse).

Natürlich wäre es schön, wenn Ihr mir auch alle anderen Anregungen und Vorschläge mitteilen könntet.

Sachliche Kritik wäre nett!

p.s.: Kritik in den Foren ist zwar im Sinne des Erfinders, diese Seite hier dubios und mich unseriös zu nennen finde ich aber ein wenig unfair! Oder an den Ergebnissen zweifeln, nur weil der Quellcode nicht offen liegt ist m.E. auch voll daneben! Oder bekommt man irgendwo den Spec2000/3DMark-Quellcode?

^ back up


compiled wurde der Benchmark mit Borland Delphi 7 Personal ohne Prozessoroptimierungen auf dem auch getesteten Pentium4-Mobile unter Windows XP

** Zitat aus der Delphi 7 Personal-Hilfe "Der Typ Comp (für "computational") ist ein natives Format der Intel-Prozessorarchitektur und stellt einen 64-Bit-Integer dar. Er ist dennoch als reeller Typ klassifiziert, weil sein Verhalten nicht dem eines ordinalen Typs entspricht. ... Comp ist nur aus Gründen der Abwärtskompatibilität vorhanden. ..."

Windows ist eingetragenes Markenzeichen der Microsoft Corporation,

Delphi ist eingetragenes Markenzeichen der Borland Software Corporation


Fragen und Anregungen hierzu an Benchmark@MikeBeh.de