Testet mal meinen Benchmark :-)

Diskutiere Testet mal meinen Benchmark :-) im Hardware Forum Forum im Bereich Hardware & Software Forum; Hallo, das Problem bei Assembler-Befehlen ist, dass sie nur für eine Architektur optimale Ergebnisse liefern. Windows XP als Guest-OS unter...
  • Testet mal meinen Benchmark :-) Beitrag #21
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

das Problem bei Assembler-Befehlen ist, dass sie nur für eine Architektur optimale Ergebnisse liefern.

Windows XP als Guest-OS unter vmware 4.0 liefert einen Score von 1219 (siehe Attachment). Host OS ist Windows XP auf Dual P4 Xeon 2.8 Ghz (mit HT) und 2GB RAM.

Schreib Dein Programm doch mal in C um (und poste den Quellcode), um die Ergebnisse der Compiler-Optimierung mit Deinen Ergebnissen zu vergleichen. Ich bin mir ziemlich sicher, dass die Compiler auf bestimmten Architekturen deutlich schnelleren Code erzeugen.

Ausserdem solltest Du einen größeren Messintervall verwenden, um brauchbare Ergebnisse zu erzielen.

Nic
 
  • Testet mal meinen Benchmark :-) Beitrag #22
FatherFrost

FatherFrost

Moderator
Teammitglied
Dabei seit
26.11.1999
Beiträge
4.710
Reaktionspunkte
3
Ort
NorthPole
@ FerFemNemBem

bei den tests spielt nur die cpu geschwindigkeit eine rolle. weder ram noch sogar cache bringt vorteile.

@nic_power

kein wunder, das prog läuft nur in einem thread, somit wird nur eine cpu beansprucht, und 1219 punkte für nen P4 2.8 ist gar nicht so schlecht.

@Fireglider

hat der benchmark auf dem notebook immer ähnliche ergebnisse geliefert? weil wie bereits oben gesagt, nen kumpel von mir meint er würde ergebnisse mit einem 200%-300% unterschied rausbekommen.

@all

bald gibts nen für intels gerechteren benchmark :)
 
  • Testet mal meinen Benchmark :-) Beitrag #23
SR530

SR530

PowerUser + Ex Super-Moderator
Dabei seit
21.02.1999
Beiträge
9.117
Reaktionspunkte
0
Original geschrieben von Fireglider
AMD XP 2500 @ 3000
1024 Ram
=
1768

Ich find den Wert was niedrig.... :(



Greets
:D ... und wahrscheinlich die teuersten Bauteile verwendet ... :st:
Ich kann meinen auch noch höher drehen, aber dann ist nichts mehr mit Primestable.
 
  • Testet mal meinen Benchmark :-) Beitrag #24
F

Fireglider

PowerUser Sir Henry
Dabei seit
12.12.1999
Beiträge
14.335
Reaktionspunkte
9
Original geschrieben von SR530
:D ... und wahrscheinlich die teuersten Bauteile verwendet ... :st:

Wie meinsten das? :confused:


Mit´m Lappie isset beim 2. mal 711



Grüße
 
  • Testet mal meinen Benchmark :-) Beitrag #25
BioaSharky

BioaSharky

Super-Moderator
Teammitglied
Dabei seit
25.01.1999
Beiträge
18.511
Reaktionspunkte
9
Score: 62 :lach:

-----------------------------------
Siemens Nixdorf Mobile 710
P166MHz / 64MB

(Wirklich ungerecht meinem Pentium gegenüber!!!)
 
  • Testet mal meinen Benchmark :-) Beitrag #26
tomperman

tomperman

Bekanntes Mitglied
Dabei seit
17.02.2000
Beiträge
562
Reaktionspunkte
0
Ort
99999 Nothing
Laptop
Pentium M 1,5 GHz
1490 Punkte
 
  • Testet mal meinen Benchmark :-) Beitrag #27
FerFemNemBem

FerFemNemBem

Moderator
Teammitglied
Dabei seit
11.09.1999
Beiträge
4.494
Reaktionspunkte
0
Hi,

@FatherFrost,

dann kann mit dem Benchmark aber was nicht stimmen. Wenn Deine Aussage so richtig ist, wie erklaerst du dir dann meine folgenden Messungen?

2.0 GHz Pentium 4 => 867 Punkte
Intel Celeron 1100 => 1020 Punkte
2.4 GHz Pentium 4 => 1032 Punkte

wieso hat ein 2.0GHz P4 weniger Punkte als ein 1100er Celi und warum hat ein 2.4GHz P4 nur unwesentlich mehr Punkte als der 1100er Celi wenn die reine Prozessorleistung gemessen wird?

Irgendwas stimmt da noch nicht. Woher kann diese Schwankung kommen?

Gruss, FFNB.
 
  • Testet mal meinen Benchmark :-) Beitrag #28
Nabolo

Nabolo

Bekanntes Mitglied
Dabei seit
16.09.2001
Beiträge
1.136
Reaktionspunkte
0
Ort
Badnerland
Also ich habe auch unterschiefliche Werte.

Mit meinem XP1700+(@1913 Mhz) bekomme ich
Werte von 1740-1795 Punkte.

Gruß Nabolo
 
  • Testet mal meinen Benchmark :-) Beitrag #29
bofh

bofh

Bekanntes Mitglied
Dabei seit
09.03.2000
Beiträge
3.269
Reaktionspunkte
2
p4 1,6 ghz 256 mb sd-ram

642 points
 
  • Testet mal meinen Benchmark :-) Beitrag #30
Onkel Dagobert

Onkel Dagobert

Bekanntes Mitglied
Dabei seit
04.07.1999
Beiträge
157
Reaktionspunkte
0
Ort
Ruhrpott
XP 1700+ @ 2000 Mhz (166 FSB)
MSI KT3 Ultra
512 MB DDR CL 2,5

1945 Punkte :)

Gruß
Dagobert
 
  • Testet mal meinen Benchmark :-) Beitrag #31
Irdeto

Irdeto

Bekanntes Mitglied
Dabei seit
24.07.2000
Beiträge
371
Reaktionspunkte
0
Ort
/root
Athlon XP 3000+
512 MB Corsair FSB400 CL2 (zur Zeit leider noch auf 333)

2040 Punkte




MfG
 
  • Testet mal meinen Benchmark :-) Beitrag #32
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

ich verstehe den Sinn dieses "Benchmarks" nicht so recht. Aufgabe eines Benchmarks ist es, vergleichbare und reproduzierbare Ergebnisse zu erzeugen. Wie reproduzierbar sind Ergebnisse, wenn bereits Messungen auf ein und dem selben System um 200% oder 300% abweichen (sie sind nicht ansatzweise reproduzierbar und schon gar nicht vergleichbar)?

Um sinnvolle Ergebnisse zu erhalten, ist es wichtig, die Gesamtperformance eines Systems zu messen. Dazu gehören nicht nur ein oder zwei Assemblerbefehle (dazu reicht ein Blick ins Handbuch, dort sind die Zykluszeiten mit angebenen). Nicht umsonst werden bei richtigen Benchmarks auch die Leistungen der Compiler mit einbezogen. Ausserdem sollte man auch über einen längeren Zeitraum testen. Je kleiner der Bereich, desto ungenauer die Ergebnisse (bei einer Laufzeit von unter einer Sekunde ist eine Abweichung von 0.2 Sekunden erheblich, bei Laufzeiten von mehreren Minuten spielt sie hingegen keinerlei Rolle).

Ein Compiler ist in der Lage, den Code auf die zu Grunde liegende Architektur zu optimieren. Beispielsweise durch Loop-Unrolling (sinnvoll, wenn man mehr als eine Execution Unit hat oder Sprünge sehr langsam sind (Pipeline-Stalls), Instruction Reordering, Alignment auf Cache-Lines, Verwendung alternative Instruktionen, die Unterstützung der Branch Prediction usw. usf.

Natürlich spielt auch der Cache eine Rolle. Auf Grund seiner Größe laufen die Schleifen Deine Benchmarks komplett im (L1) Cache ab.

Wie realistisch ist es, dass ein Intel Celeron 1100 schneller als ein 2.4 GHz Pentium 4 ist? Soll ich mir jetzt den Celeron 1100 kaufen, wenn ich eine schnelle Maschine benötige (zumal der Benchmark auf dem Celeron nur unwesentlich langsamer ist, als eine Dual Xeon 4, 2.8GHz Konfiguration)?

Nic
 
  • Testet mal meinen Benchmark :-) Beitrag #33
F

Fireglider

PowerUser Sir Henry
Dabei seit
12.12.1999
Beiträge
14.335
Reaktionspunkte
9
Ich denke, dies war doch nur eine praktische Anlaufplattform, um das mal auszutesten.

Verbessern kann man ja immer noch.



Grüße
 
  • Testet mal meinen Benchmark :-) Beitrag #34
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

die Frage ist nur, was da getestet werden soll. Die Ausführungszeiten einzelner Instruktionen sind in den Manuals zu den CPUs zu finden, müssen also nicht gemessen werden.

Nic
 
  • Testet mal meinen Benchmark :-) Beitrag #35
FerFemNemBem

FerFemNemBem

Moderator
Teammitglied
Dabei seit
11.09.1999
Beiträge
4.494
Reaktionspunkte
0
Hi,

ich hatte uebrigens auch mal sowas zusammengeschustert - zum messen der Performance der Microsoft VM.
Da ist ein Rechentest, UIPerformance Test und ein FileSystemTest dabei. Einfach die PerfTest.exe auf ein Laufwerk mit mindestens 20MB Plattenplatz legen und doppelklicken(eine Installierte Microsoft VM ist natuerlich Voraussetzung). ;)
Nach einer Weile, liegt dann ein performance.log neben der PerfTest.exe. Dort stehen die Ausfuehrunszeiten der einzelnen Tests drinnen - einen Score wollte ich nicht dazubasteln.
Achtung, wenn man den FileSystemTest abbricht, bleibt eine Datei namens FerFemNemBem.tmp liegen. Diese muss dann von Hand geloescht werden.
Da hier die wichtigsten Eckdaten gemessen und die Aufrufe wie in normalen java-Programmen verwendet werden, ist das ding glaube ich ziemlich Praxisnah.
Achso, wie auch bei der Ausfuehrung von normalen MS-JVM Programmen, spielt es hier eine Rolle, ob das Fenster den Focus hat oder nicht usw...

Gruss, FFNB.
 
  • Testet mal meinen Benchmark :-) Beitrag #36
FatherFrost

FatherFrost

Moderator
Teammitglied
Dabei seit
26.11.1999
Beiträge
4.710
Reaktionspunkte
3
Ort
NorthPole
1072703225463 : Begin MathLoopTest
1072703244129 : End MathLoopTest
1072703244139 : Begin UITest
1072703251861 : End UITest
1072703251871 : Begin FileTest
1072703322692 : End FileTest

na die zahlen wenigstens von einander abziehen hättest du können :)

@nic

Hallo,

ich verstehe den Sinn dieses "Benchmarks" nicht so recht. Aufgabe eines Benchmarks ist es, vergleichbare und reproduzierbare Ergebnisse zu erzeugen. Wie reproduzierbar sind Ergebnisse, wenn bereits Messungen auf ein und dem selben System um 200% oder 300% abweichen (sie sind nicht ansatzweise reproduzierbar und schon gar nicht vergleichbar)?

bis jetzt ist dies nur auf einem notebook aufgetretten, der wahrscheinlich irgendwelche problemme mit der speedstep technologie hat :) und hier im forum hatte niemand das problem

Um sinnvolle Ergebnisse zu erhalten, ist es wichtig, die Gesamtperformance eines Systems zu messen. Dazu gehören nicht nur ein oder zwei Assemblerbefehle (dazu reicht ein Blick ins Handbuch, dort sind die Zykluszeiten mit angebenen). Nicht umsonst werden bei richtigen Benchmarks auch die Leistungen der Compiler mit einbezogen.

stimmt schon. erstmal muss man ja irgendwo anfangen :). zweitens sind die meissten programme für alle computer bestimmt. die werden ja nicht auf jedem system einzeln kompiliert.
und drittens will ich mitm benchmark nur die cpu performance testen. es ging eigentlich um den streit zwischen mir und dem notebook besitzer wessen cpu schneller ist. er hat centrino 1. 6ghz und ich den amd 2400+. dass sein ram mit der 200mhz anbindung schneller ist als meiner ist klar, genau so wie dass eine meiner festplatten schneller ist und ne andere langsamer. oder das ich ne bessere 3d performance habe.

Ausserdem sollte man auch über einen längeren Zeitraum testen. Je kleiner der Bereich, desto ungenauer die Ergebnisse (bei einer Laufzeit von unter einer Sekunde ist eine Abweichung von 0.2 Sekunden erheblich, bei Laufzeiten von mehreren Minuten spielt sie hingegen keinerlei Rolle).

klar, nur wer will schon bei einem test minutenlang warten. ich habe zb nie bock 3dmark zu starten weils so lange dauert. da ändere ich mal eine enstellung und bekommen nach 5 minuten einen wert, der auch noch von mal zu mal schwankt

ich frage mich noch ob 1 milliarden additionen, die in 0.2 sec gemacht werden, nicht nen gten durchschnitt bilden lassen. :)


Ein Compiler ist in der Lage, den Code auf die zu Grunde liegende Architektur zu optimieren. Beispielsweise durch Loop-Unrolling (sinnvoll, wenn man mehr als eine Execution Unit hat oder Sprünge sehr langsam sind (Pipeline-Stalls), Instruction Reordering, Alignment auf Cache-Lines, Verwendung alternative Instruktionen, die Unterstützung der Branch Prediction usw. usf.

ich ziehe sowieso die zeit für loops von der gesamtzeit ab.

Natürlich spielt auch der Cache eine Rolle. Auf Grund seiner Größe laufen die Schleifen Deine Benchmarks komplett im (L1) Cache ab.

Wie realistisch ist es, dass ein Intel Celeron 1100 schneller als ein 2.4 GHz Pentium 4 ist? Soll ich mir jetzt den Celeron 1100 kaufen, wenn ich eine schnelle Maschine benötige (zumal der Benchmark auf dem Celeron nur unwesentlich langsamer ist, als eine Dual Xeon 4, 2.8GHz Konfiguration)?
okok das mit dem pentiums ist mein fehler

Der liegt übrigens darin, dass sie doppelt so viel für multiplikation brauchen und der multiplikationstest zu lange dauert, den anderen tests gegenüber. das werde ich natürlich beim nächsten mal wissen

sinnvolerweise sollte man auch bei punktevergabe die relative häufigkeit der befehle in der praxis beacheten. muss ich auch noch machen :)
 
  • Testet mal meinen Benchmark :-) Beitrag #37
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Original geschrieben von FatherFrost

und drittens will ich mitm benchmark nur die cpu performance testen. es ging eigentlich um den streit zwischen mir und dem notebook besitzer wessen cpu schneller ist.
Du testest momentan aber nicht die Performance der CPU (dazu muß zum einen ein wesentlich größerer Teil des Instruktionssatzes verwendet werden und zum anderen gehören dazu auch die Architekturmerkmale; also Pipelining, Instruction-Reordering, Anzahl der Execution-Units, Anzahl der Instruktionen die parallel ausgeführt werden können, Einfluss der On-Chip Caches usw), sondern die Geschwindigkeit von Instruktionen die in dieser Kombination in der Realität nie auftreten werden (siehe unten).


klar, nur wer will schon bei einem test minutenlang warten.
Das ist eine etwas seltsame Argumentation. Wenn der User vernünftige Ergebnisse eines Benchmaks erwartet, muss er diesen auch über einen Zeitraum laufen lassen, in dem brauchbare Ergebnisse ermittelt werden können. Ist er dazu nicht in der Lage kann er auch keine repräsentativen Ergebnisse erwarten.

ich frage mich noch ob 1 milliarden additionen, die in 0.2 sec gemacht werden, nicht nen gten durchschnitt bilden lassen. :)


sinnvolerweise sollte man auch bei punktevergabe die relative häufigkeit der befehle in der praxis beacheten. muss ich auch noch machen :)
Auf welchen Statistiken basiert die Punktvergabe? Wie hast Du ermittelt, welche Befehle wie häufig verwendet werden. Und welche Programme hast Du dazu im einzelnen untersucht (es gibt eine eklatanten Unterschied zwischen Word & Co und wissenschaftlich/technischen Anwendungen)?

Ein Benchmark macht nur dann Sinn, wenn auch realistische Szenarien getestet werden. Du verwendest beispielsweise für die Messung der Addition den folgenden Code (100 Mio Durchläufe mit je 10 Instruktionen):

PHP:
.text:004013B3                 mov     ds:addCounter, 0 ; Counter auf Null setzen
.text:004013BD 
.text:004013BD addSchleife:                            ; CODE XREF: benchAddition+51j
.text:004013BD                 mov     eax, ds:addCounter
.text:004013C2                 cmp     eax, [ebp+counterArg] ; 100.000.000 Durchläufe erreicht?
.text:004013C5                 jl      short startAdd  ; wenn nein, dass 10 Additionen durchführen
.text:004013C7                 jmp     short addEnde   ; wenn ja, dann Ende der "Messung"
.text:004013C9 ; ---------------------------------------------------------------------------
.text:004013C9 
.text:004013C9 startAdd:                               ; CODE XREF: benchAddition+33j
.text:004013C9                 add     ebx, ecx        ; Add
.text:004013CB                 add     ebx, ecx        ; Add
.text:004013CD                 add     ebx, ecx        ; Add
.text:004013CF                 add     ebx, ecx        ; Add
.text:004013D1                 add     ebx, ecx        ; Add
.text:004013D3                 add     ebx, ecx        ; Add
.text:004013D5                 add     ebx, ecx        ; Add
.text:004013D7                 add     ebx, ecx        ; Add
.text:004013D9                 add     ebx, ecx        ; Add
.text:004013DB                 add     ebx, ecx        ; Add
.text:004013DD                 inc     ds:addCounter   ; Counter um 1 erhöhen
.text:004013E3                 jmp     short addSchleife ; nächster Schleifendurchlauf
.text:004013E5 ; ---------------------------------------------------------------------------
.text:004013E5 
.text:004013E5 addEnde:                                ; CODE XREF: benchAddition+35j
.text:004013E5                 call    addTimeAndPrint ; Call Procedure
.text:004013EA                 leave                   ; High Level Procedure Exit
.text:004013EB                 retn                    ; Return Near from Procedure

Kein Compiler und auch kein Assemblerprogrammierer wird ein derartiges Code-Fragment erzeugen, da diese Kombination von Additionen nie in der Praxis auftreten wird (die Sequenz läßt sich entweder auf eine Multiplikation abbilden oder auf eine Kombination von 2x Shift und 1x Add (falls die Multiplikation zu langsam sein sollte)). Bei genauer Betrachtung der Schleife fällt ins Auge, dass diese sowieso seltsam aussieht, da Speicherzugriffe erfolgen und der innere Schleifenkörper nicht in einem einzelnen Loops liegt sondern wild hin- und hergesprungen wird.

Nic
 
  • Testet mal meinen Benchmark :-) Beitrag #38
FatherFrost

FatherFrost

Moderator
Teammitglied
Dabei seit
26.11.1999
Beiträge
4.710
Reaktionspunkte
3
Ort
NorthPole
ich habs doch in c geschrieben, das hat der compiler erzeugt :)

gcc ist es übrigens

ich hab nur das als assembler auf die schnelle eingefügt.

Code:
.text:004013C9                 add     ebx, ecx        ; Add 
.text:004013CB                 add     ebx, ecx        ; Add 
.text:004013CD                 add     ebx, ecx        ; Add 
.text:004013CF                 add     ebx, ecx        ; Add 
.text:004013D1                 add     ebx, ecx        ; Add 
.text:004013D3                 add     ebx, ecx        ; Add 
.text:004013D5                 add     ebx, ecx        ; Add 
.text:004013D7                 add     ebx, ecx        ; Add 
.text:004013D9                 add     ebx, ecx        ; Add 
.text:004013DB                 add     ebx, ecx        ; Add

mir gings ja auch darum zu messen wie schnell add geht. :)

was mir z.b. weiter vorschwebt: dass der benutzer die dauer selber einstellt. und das es 1 - 2 algorithmen gibt zum testen

Auf welchen Statistiken basiert die Punktvergabe? Wie hast Du ermittelt, welche Befehle wie häufig verwendet werden. Und welche Programme hast Du dazu im einzelnen untersucht (es gibt eine eklatanten Unterschied zwischen Word & Co und wissenschaftlich/technischen Anwendungen)?

irgendwie muss man die punkte ja vergeben :)
 
Zuletzt bearbeitet:
  • Testet mal meinen Benchmark :-) Beitrag #39
P

Pacoibiza

Bekanntes Mitglied
Dabei seit
10.12.2000
Beiträge
954
Reaktionspunkte
0
Ort
Erfurt
Hallöchen

Also wenn ich hier so die Pentiumwerte sehe, kann ich auch angeben mit meinem Athlon XP 2400+ / 512mb DDR-Ram
1.x 1924
2.x 1936
3.x 1950

2. Rechner Athlon XP 2000+ / 512mb SdRam
1612

kommt wahrscheinlich auch auf die Graka und den Speicher an und ob was im Hintergrund ausgeführt wir
 
  • Testet mal meinen Benchmark :-) Beitrag #40
N

nic_power

Senior Moderator
Dabei seit
27.12.2000
Beiträge
7.838
Reaktionspunkte
2
Hallo,

Original geschrieben von FatherFrost
ich habs doch in c geschrieben, das hat der compiler erzeugt :)

gcc ist es übrigens

ich hab nur das als assembler auf die schnelle eingefügt.
Also eine "leere" Schleife mit inline-Assembler? Kein wunder, das der Code so seltsam aussieht, da der Optimizer damit so seine Probleme hat. Verwendest Du ein optimization hint bei den asm-Direktiven und welche Optionen verwendest Du beim Übersetzen?


irgendwie muss man die punkte ja vergeben :)
Schon klar. Aber interessant ist wie die Punkte vergeben werden (anhand welcher Datenbasis). Ohne eine sinnvolle Gewichtung sind die Ergebnisse nicht brauchbar.

Nic

PS:
Wieso postet Du nicht einfach mal den Quellcode?
 
Thema:

Testet mal meinen Benchmark :-)

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben