<- 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:

Gleicher Hintergrund wie bei dem vorherigen Benchmark.

^ back up


Arbeitsweise:

In diesem Programm werden die vom Computer benötigten Zeiten für die Erstellung und das Sortieren großer Datenmengen (Arrays) gemessen und in einer Datei zusammengefasst. Dieses Programm ist eine Konsolen-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 Arrays als eigene Klasse erfasst.

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

 

Zuerst wird pro Datentyp ein Array mit 10.000.000 Einträgen (Zufallszahlen im Wertebereich des Datentyps) erstellt und die jeweilige Zeit gemessen.

Anschliessend wird dieses Array per QuickSort sortiert und auch hierfür die benötigte Zeit gemessen.

Das Array kann je nach Datentyp bis zu 10*10.000.000 Byte (Datentyp extended, etwa 95,4 MByte) groß werden. Größere Arrays machen keinen Sinn, da viele ältere Rechner auf Grund ihres RAMs von 128MB dann nicht mehr verglichen werden können.

Das Erstellen und Sortieren stellt im Gegensatz zu dem ersten Benchmark genau die gegenteiligen Anforderungen. Hier wird fast ausschließlich die Verarbeitung von Massendaten gemessen. Es werden die Caches, der Speicher und die Speicheranbindung getestet.

Diesen Zeiten werden 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.

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.

Anmerkungen:

a) Da ausschließlich größere Datenmengen bewegt werden, ist die Größe der Prozessorcaches sowie des RAMs und der Anbindung zwischen diesen von 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, Dual-Prozessor-Rechner oder die neuen Dual-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 (etwa 20), waren auf diesen Rechnern unterschiedliche Betriebssysteme installiert, habe ich mir die Chance natürlich nicht entgehen lassen... :)

Neben meinen eigenen Rechnern, die meist mit AMD-Prozessoren oder älteren Intels liefen, waren bereits einige Pentium 4-Typen im Test.

Zuerst die Grafik der einzelnen, über die MHz gewichteten Zeiten des Array-Füllens:

         

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

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

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 erstellt und da noch keinen 64bit CPUs getestet wurden, entgegen den Werten von vorzeichenlos (comp) und vorzeichenbehaftet (Int64) aus dem ersten Benchmark gibt es hier keine wesentlichen Unterschiede

-    die Datenbasis hier ist noch wesentlich geringer als beim ersten Benchmark aber man erkennt, daß auch hier der Pentium M führt, gefolgt von den Athlons, der einzige Pentium 4 steht ganz hinten an

 

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

         

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

Im Ganzzahl-Bereich ist es recht ausgeglichen, der Pentium 4 kann etwas aufholen. Es dominieren die PentiumM vor den Athlons.

Im Gleitkommabereich ist ein Bruch bei den Real48-Werten zu sehen. Anscheinend erfordert die Bearbeitung dieses Datentyps einige zusätzliche Rechenschritte, bevor hier etwas ausgewertet und sortiert werden kann.

Das Sortieren im 64bit-Bereich scheint den Prozessoren deutlich weniger abzuverlangen als das Füllen.

 

Das Ganze noch einmal zusammengefasst, sortiert nach Gesamt-Sortier-Performance:

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

Erkenntnis: Im 32bit-Bereich gibt es nur geringe Unterschiede, die PentiumM führen vor Athlon XP. Im Gleitkomma-Bereich das gleiche Bild, aber mit größeren Abständen. Ebenso im 64bit-Vergleich. Der ältere K6/2 kann hier nicht mehr mithalten, im Gleitkomma-Sortieren kommt er auf über 200.000.

^ back up


FAZIT:

Die Leistung der Cache-RAM-Austattung und -Anbindung lässt sich deutlich schlechter vergleichen, da wesentlich mehr Faktoren als beim ersten Test zum Tragen kommen, Cache und RAM-Größe, FSB-Geschwindigkeit, RAM-Geschwindigkeit, usw.

Als Erkenntnis bleibt lediglich, dass auch hier wieder der Pentium M vor den Athlons führt.

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 bisher Ergebnisse von nahezu allen aktuellen Pentium-Typen und allen Athlon64-Typen und sämtlichen Serverprozessoren wie auch aussagekräftige Vergleiche zwischen Betriebssystemen wie Linux und Co.

-    zu testende Rechner benötigen mindestens 128MB RAM

 

 

mögliche und unmögliche Erweiterungen:

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

-    eine Linux-Version, die ich zu gegebener Zeit mal in Angriff nehmen werde

^ 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, PentiumD, Athlon64 aber auch Opteron, Itanium, XEON und VIA sind gern gesehen. Gerade die großen Itanium mit den Riesen-L2-Caches 3-9MB ziehen ja im Spec2000 allen anderen davon. Ich nehme aber unbedingt alle verfügbaren Ergebnisse!

Hier gibt's mein Benchmarktool Nr. 2 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!

^ back up


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

Windows ist eingetragenes Markenzeichen der Microsoft Corporation,

Delphi ist eingetragenes Markenzeichen der Borland Software Corporation


Fragen und Anregungen hierzu an Benchmark@MikeBeh.de