Entwickler-Ecke

Freeware Projekte - Performance der Prozessoren ...!


Hochhaus - Mi 22.01.14 15:43
Titel: Performance der Prozessoren ...!
Hallo allerseits !

das Quadratwurzelprogramm in der Beilage frisst enorm Ressourcen. Und da bitte ich um Eure Mithilfe: Würdet Ihr bitte die Quadratwurzel aus 2 auf 10'000 Nachkommastellen von Euren PC's berechnen lassen, und das Ergebnis (Zeit in sec.) hier posten ? Natürlich mit Angabe des Prozessors und der Taktfrequenz.

Besten Dank für Eure Mithilfe !

Dies hilft, den besten Mathe-Rechner ausfindig zu machen.


Hochhaus

Mein Ergebnis: Core 2 Duo 2.93 GHz: 4.638 sec.


Lelf - Mi 22.01.14 16:09

Ergebnis von sqrt(2) 10'000 Stellen: 2,953 sec.
CPU: Intel Core i7 3770K @ 3.50GHz Ivy Bridge 22nm Technologie
RAM: 8,00GB Dual-Kanal DDR3 @ 800MHz

Am Ende kommt eine Fehlermeldung: "Dateizugriff verweigert". Damit fange ich nichts an.

Gruß Lelf


Horst_H - Mi 22.01.14 16:23

Hallo,

5,242 sec. auf AMD Phenom II X955 3.2 Ghz mit 4 Gb Speicher.
11 Mb während der Ausführung im Taskmanager. Läßt sich nicht stoppen.Auch Dateizugriffsfehler.

Gruß Horst


Hochhaus - Mi 22.01.14 16:27

user profile iconLelf hat folgendes geschrieben Zum zitierten Posting springen:

Am Ende kommt eine Fehlermeldung: "Dateizugriff verweigert". Damit fange ich nichts an.

Gruß Lelf


Das Proggi versucht, das Ergebnis im Verzeichnis der EXE-Datei zu speichern. Je nach Zugriffsmöglichkeiten kommt dann dieser Fehler - z.Bsp. auch, wenn es ab CD läuft.

Hochhaus


Marc. - Mi 22.01.14 17:13

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
5,242 sec. auf AMD Phenom II X955 3.2 Ghz mit 4 Gb Speicher.
Ich hätte es gar nicht mehr ausführen müssen. Wir haben im Grunde die gleichen CPUs, die Algorithmus-Laufzeit skaliert sehr gut mit dem Takt:

AMD Phenom II X4 945 4x 3GHz 8GB RAM: 5.538s
und um 600 MHz übertaktet: 4.633s

3.6/3 ~ 5.538/4.633 ~ 1.2

Gruß Marc


Hochhaus - Mi 22.01.14 17:20

user profile iconLelf hat folgendes geschrieben Zum zitierten Posting springen:
Ergebnis von sqrt(2) 10'000 Stellen: 2,953 sec.
CPU: Intel Core i7 3770K @ 3.50GHz Ivy Bridge 22nm Technologie

Gruß Lelf


Ok. Du hast ganz offensichtlich die beste CPU bis jetzt ! Ich bin mal gespannt, was die weiteren Ergebnisse sind ...


Lelf - Mi 22.01.14 17:26

Hallo Hochhaus,

Du hast recht: Wenn man die entpackte EXE in ein anderes Verzeichnis kopiert wird das Ergebnis im Protokoll angezeigt, sowie als Wurzel.Doc-Datei auf die Festplatte geschrieben. Aber warum doppelt?

Gruß Lelf


Hochhaus - Mi 22.01.14 17:36

user profile iconLelf hat folgendes geschrieben Zum zitierten Posting springen:
Aber warum doppelt?

Gruß Lelf


Damit man das Ergebnis optisch sofort sieht und man es nicht per Copy + Paste selbst in eine Datei kopieren muss .

Hochhaus


jfheins - Mi 22.01.14 18:43

Ich habe das gerade mal auf mehreren Rechnern ausprobiert. Leider lastet es nur einen Kern aus, gerade auf dem letzten könnte es multithreaded wesentlich flotter laufen.

Alle Zeiten für 10k Stellen:
AMD E2-1800: 11,89 sec
Intel XEON E3-1240: 3,31 sec
Dual Intel XEON E5-2643 @ 3,3GHz : 3,87 sec (braucht 34,9 sec. für 30k Stellen)


Horst_H - Mi 22.01.14 18:44

Hallo,

ich teste nochmal meinen neuen i4330 3.5 Ghz 8 GB ( 1833 Mhz ? ) der braucht für 10000 Stellen 4,188 sec Linux/wine ( Pentomino ist unter wine schneller )
Haswell hin oder her, jetzt bin ich enttäuscht.

Gruß Horst


Hochhaus - Mi 22.01.14 19:04

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:


Haswell hin oder her, jetzt bin ich enttäuscht.

Gruß Horst


Sehr wahrscheinlich wäre es ohne Linux - direkt unter Windows - schneller. Vermute ich.


Horst_H - Mi 22.01.14 19:15

Hallo,

ich habe nur linux/wine benutzt und wie geschrieben, pentomino ist unter wine schneller.
Das Programm läuft ja ohne Bildschirm und Dateiarbeit und damit ist die Interaktion mit der WinApi minimal.

Gruß Horst


Hochhaus - Mi 22.01.14 19:16

user profile iconjfheins hat folgendes geschrieben Zum zitierten Posting springen:
könnte es multithreaded wesentlich flotter laufen.


Es ist nur sehr schwierig, den Algorithmus auf mehrere Kerne zu verteilen.


Hochhaus


Hochhaus - Mi 22.01.14 19:22

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Das Programm läuft ja ohne Bildschirm und Dateiarbeit und damit ist die Interaktion mit der WinApi minimal.

Gruß Horst


Das Programm schreibt das Ergebnis in eine Datei. Allerdings ist dies eine eher kurze Angelegenheit. Mich würde es interessieren, wenn noch jemand anderes mit Haswell-Prozessor das Programm austesten würde. Unter Windows XP, Vista, 7 oder 8.

Könntest Du die simulierte Windows-Version unter Linux nicht ändern ?

Hochhaus


OlafSt - Mi 22.01.14 21:51

Hab meinen i5 mal damit gequält: 4,135 sec.

CPU ist ein Core-i5 2400 @ 3,2GHz Standard-Takt (Sandy-Bridge), 8GB DDR3-RAM.


Horst_H - Do 23.01.14 00:47

Hallo,

ich dachte mir, Wurzel ziehen aus 2 mittels Heron Verfahren unter Einsatz von GMP müsste doch sehr simpel sein.
Mit freepascal unter linux64 ( da schwirrt ja libgmp sowieso herum, aber gpm.dll für Windows gibt es auch:
gmp-wrapper-for-delphi [https://code.google.com/p/gmp-wrapper-for-delphi/downloads/list]


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
//gespeichert unter sqrt2gmp.dpr
program sqrt2gmp;
{$IFdef fpc}
  {$MODE Delphi}
{$ELSE}
  {$APPTYPE CONSOLE}
{$ENDIF}

// Wurzel 2 im Heronverfahren für cDigits Dezimalstellen
// Ausgabe mp_printf funktionierte unter linux64 mit 32bitlibs nur bis 8192 Zeichen
// Unter Windows kein Problem
uses
  sysutils,
{$IFdef fpc}
    gmp;
{$ELSE}
  gmp_lib;
{$ENDIF}

const
 cDigits =100000;
var
  T2,T1,T0: TDateTime;
  n,cnt : integer;
  a,Naeherung,erg,die2: mpq_t;
  f : mpf_t;
  buf : string;
begin
  mpq_init(die2);
  mpq_init(a);
  mpq_init(Naeherung);
  mpq_init(erg);
  T0:= Time;
try
  mpq_set_str(die2,'10',2); // 2 im Dualsystem
  mpq_set(a,die2);
  mpq_set(Naeherung,die2);
  n := round(ln(cDigits*(2-sqrt(2))/sqrt(2))/ln(2)+1)+1;
  cnt := n;
  repeat
//   Naeherung := ( a / Naeherung+Naeherung) / die2 ;
    mpq_div(erg,a,Naeherung);           //  a/x
    mpq_add(Naeherung,erg,Naeherung);   //  a/x+x
    //Statt Mul shiften um n=1 Bit, ob das wirklich heutzutage noch schneller ist?
    mpq_div_2exp(Naeherung,Naeherung,1);// x = (a/x+x)/2
    dec(cnt);
  until cnt<0;
  //Jetzt in Fliesskommazahl umwandeln
  mpf_init2(f,round(cDigits/0.30103));// cDigits dezimalen  = 100000/ log10(2) = 33219?.???

  mpf_set_q(f,erg);

  T1:= Time;
  setlength(buf,cDigits+7);
  {$IFDEF FPC}
    mp_snprintf(PAnsiChar(buf),cDigits,'%.*Ff',cdigits,@f);
  {$else}
    gmp_printf(PAnsiChar(buf),'%.*Ff',cdigits,@f);
//    gmp_printf(PAnsiChar(buf), '%.*Ff ',@f,cDigits);
  {$endif}
  T2:= Time;
  writeln;
  writeln(buf);
  writeln( n,' Durchlaeufe');
  Writeln('Rechenzeit  ',FormatDateTime('NN:SS.ZZZ' ,T1-T0));
  Writeln('Ausgabezeit ',FormatDateTime('NN:SS.ZZZ' ,T2-T1));
finally
  mpf_clear(f);
  mpq_clear(erg);
  mpq_clear(Naeherung);
  mpq_clear(a);
  mpq_clear(die2);
  readln
end;
end.

der Rest der Ausgabe:

Quelltext
1:
2:
3:
4:
...4012197700603576101524970318470624937068864601669535559159840183770081805610147523
17 Durchlaeufe
Rechenzeit  00:00.493
Ausgabezeit 00:00.158


Gruß Horst

Noch ein Edit, es gibt ja auch die Wurzelfunktion, noch wesentlich schneller siehe auch http://www.entwickler-ecke.de/viewtopic.php?t=109385 den Beitrag von user profile iconGammatester mparith oder hier mit gmp

Delphi-Quelltext
1:
2:
3:
4:
5:
..
  mpf_init2(f,round(cDigits/0.30103));
  mpfset_ui(f,2);
  mpf_sqrt(f,f);
..


mandras - Do 23.01.14 00:58

AMD Athlon II XE3 450 3,2GHZ Win 7 6GB Speicher
erster Start:5,226sec, zweiter: 5,241sec.


iKilledKenny - Do 23.01.14 10:15

AMD 64 X2 6000+, 2GB RAM => 5,687 sec.


Hochhaus - Do 23.01.14 14:02

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich teste nochmal meinen neuen i4330 3.5 Ghz 8 GB ( 1833 Mhz ? ) der braucht für 10000 Stellen 4,188 sec Linux/wine ( Pentomino ist unter wine schneller )
Haswell hin oder her, jetzt bin ich enttäuscht.

Gruß Horst


Mein Programm rechnet nicht nur sehr intensiv - es braucht auch den Hauptspeicher sehr intensiv. Was hast Du denn für Hauptspeicher eingebaut ?

Hochhaus


baumina - Do 23.01.14 14:21

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

ich teste nochmal meinen neuen i4330 3.5 Ghz 8 GB ( 1833 Mhz ? ) der braucht für 10000 Stellen 4,188 sec Linux/wine ( Pentomino ist unter wine schneller )
Haswell hin oder her, jetzt bin ich enttäuscht.

Gruß Horst


Mein Programm rechnet nicht nur sehr intensiv - es braucht auch den Hauptspeicher sehr intensiv. Was hast Du denn für Hauptspeicher eingebaut ?

Hochhaus


Ich rate jetzt mal : 8 GB Arbeitsspeicher :lupe:

Oder meinst es handelt sich evtl. um Chinesenkram?


Ralf Jansen - Do 23.01.14 14:44

Zitat:
Ich rate jetzt mal : 8 GB Arbeitsspeicher :lupe:


Intensiv nutzen und viel nutzen ist nicht das gleiche ;) Die Zahl in Klammern könnte interessanter sein.
Wobei ich eher glaube das sich die Datenmengen in Grenzen halten sollte so das alles im CPU Cache passiert.


Hochhaus - Do 23.01.14 15:30

8 Gb Hauptspeicher müsste problemlos reichen. Die Frage ist, wie sie getaktet sind - und mit dem Prozessor zusammenarbeiten. Das Programm nutzt ca. 10 - 15 MB Hauptspeicher - es passiert also nicht alles im Cache. Denke ich.

Hochhaus


papa69 - Do 23.01.14 15:36

so, habe auch mal "getestet":

mehrere Versuche: meistens 5,741 sec
schnellstes Ergebnis nach 5,726 sec.

Prozessor: Inter Core 2 Quad8200
RAM: 6GB

Prozessor-Auslastung war ziemlich "gleichmäßig", wobei aber Kern 3 "mehr" zu tun hatte. Mittlere Auslastung lag bei ca.23% (Kern 3 bei ca.35%)


Horst_H - Do 23.01.14 16:45

Hallo,

wie sieht denn der Quelltext aus?
Wie oben geschrieben, erreiche ich mit gmp 0.077 Sekunden für 100.000 Stellen, denn 10.000 kann ich mit time nicht messen.

Gruß Horst


Hochhaus - Do 23.01.14 16:59

Das Programm ist sehr rechenintensiv, es ist kein ausgeklügelter Algorithmus.

Hochhaus


Code:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
Procedure TWurzForm.StartClick(Sender: TObject);
Var I, N, P, W: LongInt;
Begin

  Start.Enabled := False;
  ZeitX := GetTickCount;
  ZeitR.Text := '0,000 sec.';
  WurzEdit.Text := '';
  StelleX.Text := '0';
  Go := True;

  SetCursor(LoadCursor(0, PChar(idc_Wait)));
  Y := 'Wurzel.Doc';
  AssignFile(Fil, Y);

  Z := 0;
  Zahl    := 0.0;
  Stellen := 1000.0;
  Summe1  := 0;  Summe2   := 0;
  Q_Test  := 0;  Q_Wurzel := 0.0;

  For I := -1 To 2000000 Do Begin
    A[I] := 0;
  End{* For *}

  For I:=-2 To 4012000 Do Begin
    S[I] := 0;
    K[I] := 0;
  End{* For *}

  Val(Wurzel.Text, Zahl, R);
  Val(Stelle.Text, Stellen, R);

  N := Trunc(Stellen);

  If (Zahl <= 0.0Or (Zahl >= 1000Then Begin
   MessageDlg('Ungültige Zahl', mtError, [mbOk], 0);
   Stop.Enabled := False;
   Clear.Enabled := True;
   Exit;
  End;

  If (Stellen < 1Or (Stellen > 1000000Then Begin
   MessageDlg('Ungültige Anzahl Stellen', mtError, [mbOk], 0);
   Stop.Enabled := False;
   Clear.Enabled := True;
   Exit;
  End;

  P := Trunc(Sqrt(Zahl));

  K[-2] := Trunc((P * P)/100);
  K[-1] := Trunc((P * P)/10) - 10 * Trunc((P * P)/100);
  K[0]  := P * P - 10 * Trunc((P * P)/10);
  A[-1] := Trunc(P/10);
  A[0]  := P - 10 * Trunc(P/10);
  S[-2] := K[-2];
  S[-1] := K[-1];
  S[0]  := K[0];

  Q_Test   := 0;
  Q_Wurzel := 0.0;
  Q_Test   := Round(10000.0 * Zahl);

  If (Sqrt(Q_Test) = Trunc(Sqrt(Q_Test))) Then Begin
     Q_Wurzel := Sqrt(Q_Test)/100;
     Str(Q_Wurzel:2:4, StrZ);
     WurzEdit.Lines[0] := 'Unsinnige Vorgabe, QWurzel = ' +
     StrZ;
     Stop.Enabled := False;
     Clear.Enabled := True;
     Exit;
  End{* IF *}

  I := 1;  {* Wichtig: I Ist nach den obigen Schleifen nicht definiert *}


  {* Zentrale Schleife, die die Nachkommastellen mit Vektoroperationen *}
  {* berechnet. Jede Komponente ist eine Ziffer                        *}

  While (I <= N) And Go Do Begin

     Application.ProcessMessages;
     If (I Mod 100 = 0Then Begin
       ZeitY := GetTickCount - ZeitX;
       ZeitReal := ZeitY / 1000.0;
       ZeitR.Text := FloatToStrF(ZeitReal, ffFixed, 63) + ' sec.';
       Str(I, AnzStel);
       StelleX.Text := AnzStel;
     End;

     Stop.Enabled := True;
     Clear.Enabled := False;
     {* Ausmultiplizieren in Vektorschreibweise *}

     For W := -1 To I Do Begin
         Inc(K[W + I], 2 * A[W]);
     End;  {* For *}

     K[2 * I] := K[2 * I] + 1;


     {* Stellenübertrag *}

     For W := 2 * I DownTo -1 Do Begin
         Z := 0;
         While (K[W] > 9Do Begin
           Dec(K[W], 10);
           Inc(Z);
         End;
         Inc(K[W - 1], Z);
     End;  {* For *}


     {* 10'000 fache Eingabe und 10'000 fache Multiplikationssumme *}

     Summe1 := Round(1.0E06 * K[-2] + 1.0E05 * K[-1] + 1.0E04 * K[0] +
               1000.0 * K[1]);
     Summe1 := Summe1 + Round(100.0 * K[2] + 10.0 * K[3] + 1.0 * K[4]);
     Summe2 := Round(10000.0 * ZAHL);


     {* Grösse der Eingabe erreicht / Oder letzte Ziffer = 9 *}

     If (Summe1 >= Summe2) or (A[I] = 9Then Begin
       Inc(I);
       CopyMemory(@K[-2], @S[-2], 2 * I + 3);
     End {* If (Summe1 ... Then *}

     {* Sonst: Letzte Ziffer um 1 erhöhen *}

     Else Begin
       Inc(A[I]);
       CopyMemory(@S[-2], @K[-2], 2 * I + 3);
     End;  {* IF (Summe1 ... Else *}

  End;  {* While I <= N *}

  If (Not Go) Then N := I;
  ZeitY := GetTickCount - ZeitX;
  ZeitReal := ZeitY / 1000.0;

  If (Q_Wurzel = 0.0Then Begin
   ReWrite(Fil);
   Writeln(Fil,'Protokoll:');
   Writeln(Fil,'__________');
   Writeln(Fil,'          ');
   Writeln(Fil,'Quadratwurzel von ',Zahl:3:4,' auf ',N,' Stellen ist: ');
   Write(Fil, A[-1], A[0], '.');

   For I := 1 To N Do Begin
       If (I/72) = Trunc(I/72Then Writeln(Fil, ' ');
       Write(Fil, A[I]);
   End{* For *}

   Writeln(Fil, ' '); Writeln(Fil, ' ');
   Writeln(Fil, 'Ende des Protokolles.');
   CloseFile(Fil);
   ZeitR.Text := FloatToStrF(ZeitReal, ffFixed, 63) + ' sec.';
   WurzEdit.Lines.LoadFromFile(Y);

   Stop.Enabled := False;
   Clear.Enabled := True;

   SetCursor(LoadCursor(0, PChar(idc_Arrow)));
  End;
End;


D.Elphi - Do 23.01.14 18:33

AMD FX-6100 (6x 3,3 GHz), 8 GB RAM: 5,156 Sekunden
MfG
D.Elphi


Jens01 - Do 23.01.14 21:25

i7-4770k, 3,5GHz, 8GB-Ram, Win8-64
--> 3,500 sec

gruss Jens


D.Elphi - Do 23.01.14 22:15

Irgendwie funktioniert das bei mir mit den Nachkommastellen nicht...


Hochhaus - Do 23.01.14 22:24

user profile iconD.Elphi hat folgendes geschrieben Zum zitierten Posting springen:
Irgendwie funktioniert das bei mir mit den Nachkommastellen nicht...


Was funktioniert nicht ? Wenn ein Spruch kommt "Dateizugriff verweigert" muss das Programm in einem Verzeichnis laufen, das Schreibzugriff bietet.


Hochhaus


D.Elphi - Do 23.01.14 22:37

Nein, ich bezog mich auf dieses Problem:
Bild
MfG


Hochhaus - Fr 24.01.14 08:15

Ok. Das ist ein arger Bug. Ich werde ihn bald flicken. In der Schweiz gibt man einen Dezimalpunkt ein und KEIN Komma. Dann funktioniert alles normal.


Hochhaus


Tilo - Fr 24.01.14 08:52

Mann ist mein System veraltet (Laptop Okt2006!)

CPU: T2300 auf 1,6 GHz (Dual Core, 32 Bit, "Yonah"
4 Gb Ram
Win 7 32bit

Zeiten:
a) 11,980 sec (dynamisch gedrosselte Leistung),
b) 10,921 sec (max Performance)


Th69 - Fr 24.01.14 11:50

Eigentlich kommt mir mein Notebook (hier auf der Arbeit) immer total träge vor, aber die Zeiten gehen ja: 4,586 sec (bestes: 4,508 sec - langsamstes: 4,712 sec - insg. ca. 10mal hintereinander getestet).

CPU: i5 (Dual Core, je 2,67 GHz)
RAM: 4 GB
Win 7 64bit


Martok - Fr 24.01.14 13:52

user profile iconTilo hat folgendes geschrieben Zum zitierten Posting springen:
Mann ist mein System veraltet (Laptop Okt2006!)
Oh, ich hab nicht den ältesten ;)

CPU: AMD Turion 64 X2 Mobile TL-58 (Tyler) (@1.9GHz)
RAM: 4 GB PC2-6400 (400 MHz)
Win XP 32bit

11,234 sec.


Hochhaus - Fr 24.01.14 17:41

user profile iconD.Elphi hat folgendes geschrieben Zum zitierten Posting springen:
Nein, ich bezog mich auf dieses Problem:
[Bild: Bild]
MfG


Müsste hiermit behoben sein ! Siehe Beilage.


OlafSt - Fr 24.01.14 19:11

Mein schon recht betagtes Notebook hier ist doch nicht der langsamste ;)

AMD Phenom II N830, 2.1GHz Triple-Core, Einstellung "Performance"

8,518 sec.

Einstellung "Pwr Save"

17,722 sec.


D.Elphi - Sa 25.01.14 12:30

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Müsste hiermit behoben sein ! Siehe Beilage.

Klappt jetzt alles wunderbar! Danke! :)


Yankyy02 - Sa 25.01.14 14:11

Hallo, hab mal getestet ....

mehrere Durchläufe 5,203 sec., 5,266 sec., 5,250 sec.

System: Win 8.1
CPU: AMD Athlon x4 640 3.00GHz
RAM: 8 GB

hoffe es hilft weiter ....

MfG


Xion - Sa 25.01.14 15:42

Also zunächst finde ich es absolut faszinierend, wie wenig sich die letzten 10 Jahre bezüglich der Rechenleistung getan hat.
Ich habe hier einen Pentium M (1.6GHz) (Thinkpad T41, also irgendwann zwischen 2003 und 2005 produziert) vor mir, und der braucht gut 11 Sekunden. Gerade mal doppelt so lange wie ein moderner Prozessor (ohne Multithreading natürlich, was oft ohnehin nicht möglich ist). Faktor 2 ist aber meist problemlos aus dem Algorithmus rauszuholen.
Leider muss mich mein T41 bald verlassen, weil ich ein Notebook mit voller OpenGL 1.4 Unterstützung brauche :cry:

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Dies hilft, den besten Mathe-Rechner ausfindig zu machen.

Diese Frage finde ich daher reichlich sinnlos. Mathe-Rechner? Wenn du deinen Code änderst, kann es schon wieder ganz anders aussehen. Dann ist z.B. plötzlich der Cache der Flaschenhals (dann kann mein Notebook noch viel besser mithalten :mrgreen: ). Und selbst wenn du den selben Code in C++ oder Java schreibst, kann es komplett anders sein.


Hochhaus - Sa 25.01.14 17:14

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Also zunächst finde ich es absolut faszinierend, wie wenig sich die letzten 10 Jahre bezüglich der Rechenleistung getan hat.


Das ist so. Einzig die Änderung vom Pentium 4 zum Core 2 Duo hat einen wesentlichen Performance-Schub gebracht. Mein Programm ist sicher nicht eine Referenz, um den besten Mathe-Rechner zu finden. Einzig ein Anhaltspunkt. Wenn man mehr wissen will, muss man einen Benchmark-Test laufen lassen, der sowohl Prozessor, Speicher, Graphikkarte und Festplatte testet.

Hochhaus


Lelf - Sa 25.01.14 17:29

Meine besonders guten Werte sind mir inzwischen etwas sonderbar vorgekommen. (10.000 Stellen: 2,953 sec 100.000: Stellen 292,781 sec.) Ich hab' mal in meinem Asus-Bios unter Ai-Tweaker nach geschaut, da steht:

Synchronizing Target CPU Turbo-Mode Speed : 4200 MHz
Target DRAM Speed : 1600 MHz

Das heißt doch wohl, daß er übertaktet ist, was mir bisher gar nicht bekannt war. Auch mit dem Programm "System-Explorer" wird dies nicht angezeigt. Also, wie Xion schon sagte, die Processor-Daten allein sind wenig aussagekräftig.

Gruß Lelf


Hochhaus - Sa 25.01.14 18:24

CPU: AMD A4-1250 APU with Radeon(TM) HD Graphics
Memory total: 3525 MB
Memory free : 1091 MB
OS: Microsoft Windows 8 - 6.2.9200 64 Bit

Zeit für 10'000 Stellen: 27.534 sec.

(Netbook für 250 Euro)


Hochhaus


Jens01 - Sa 25.01.14 19:40

@Lelf: "Meine besonders guten Werte sind mir inzwischen etwas sonderbar vorgekommen."
Als ich das sah, hatte ich sowas vermutet, da in allen zu findenen Tests der 4770er etwas schneller sein sollte. (3,5s bei 4770k zu 2,9s bei 3770k)

Hinsichtlich der Geschwindigkeit wird meiner zu 12,5% ausgelastet, d.h. eigentlich es läuft nur ein Thread. Die neueren Prozessoren sind darauf ausgelegt, dass man die Rechenleistung auf die Kerne verteilen muß. Dort spielen sie dann auch erst ihre volle Leistung aus.


OlafSt - Sa 25.01.14 20:15

user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:

Das ist so. Einzig die Änderung vom Pentium 4 zum Core 2 Duo hat einen wesentlichen Performance-Schub gebracht.


DAs war auch die letzte, massive Änderung an der Architektur. Bis zum P4 hat man versucht, mit immer mehr MHz, größeren Caches, längeren Pipelines die Leistung zu erhöhen, aber hier stoßen die Chipentwickler langsam an physikalische Grenzen. Also hat man die Idee gehabt, einfach mit mehreren CPUs (oder besser: deren Kernen) die Leistung zu pushen und via Strukturverkleinerung die Probleme beherrschbar zu machen.

Allerdings hat auch die Strukturverkleinerung ihre Grenzen. Bei 5nm Strukturgröße passen nur noch gute 30 Siliziumatome in so eine Struktur und es wird dann sehr schwierig, die Halbleiter-Effekte des Siliziums überhaupt noch zu nutzen, von Leckströmen und Tunneleffekten ganz zu schweigen.

Es wird spannend zu sehen, was passiert, wenn wir dort angekommen sind.


Lelf - Sa 25.01.14 23:36

Ich habe inzwischen die Übertaktung herausgenommen. Die Programme "Speccy" und "System Explorer" zeigen weiterhin 3500MHz an. Im Bios Stand jetzt 3900MHz. Man kann den Angaben also nicht so richtig trauen, wie schon mein alter Physiklehrer sagte: "Wer mißt, mißt Mist".

Neue Werte: 10.000 Stellen 3,375sec 100.000 Stellen 334,062sec = 5m34s

Gruß Lelf


finalizat0r - Sa 25.01.14 23:38

Normal:
CPU: AMD FX8320 3.5GHz (17.5 x 200) mit Asus Crosshair V Formula
RAM: 8GB Corsair Dominator GT 1867
Zeit: 4,496

Getaktet:
CPU: 4.95GHz (23.5 x 211) von 1,34V auf 1,5V
RAM: 1948MHz und von 1.5V auf 1.66V
Zeit: 3.461


Jens01 - So 26.01.14 00:23

@Lelf
Das wäre ja ein Ding, wenn der 3770 schneller wäre als der 4770.
Hat das Board einen Einfluß?

Der 100.000 Test lag beim 4770 bei 342 sec, ungefähr dieselbe Proportion


Lelf - So 26.01.14 00:46

Ich kann nur wiedergeben, was mir "Speccy" ausspuckt:

Motherboard
Hersteller ASUSTeK COMPUTER INC.
Model P8Z77-V LX2 (LGA1155)
Chipsatzhersteller Intel
Chipsatzmodel Ivy Bridge
Chipsatzrevision 09
Southbridgehersteller Intel
Southbridgemodel Z77
Southbridgerevision 04
Systemtemperatur 28 °C
BIOS
Marke American Megatrends Inc.
Version 2202
Datum 12.07.2013
Spannung
CPU CORE 0,936 V
MEMORY CONTROLLER 1,000 V
AVCC 3,328 V
3VCC 3,312 V
VIN4 1,000 V
VIN6 0,968 V

Diese Daten sind für mich böhmische Dörfer. Ich vermute mal, daß meine CPU immer noch übertaktet ist.

Gruß Lelf


Jens01 - Mo 27.01.14 13:27

Habe mir gerade auch dies Speccy gezogen.
De RAM hat bei mir 666MHz bei Dir 800.

Das Board ist ein ASRock.
Und aufgefallen ist mir die Systemtemperatur, die bei mir mit 39°C 10K höher ist.

Ich bin da nicht so bewandert, aber die Temperatur könnte schon eine Rolle spielen.


Marc. - Mo 27.01.14 15:08

user profile iconLelf hat folgendes geschrieben Zum zitierten Posting springen:
Ich kann nur wiedergeben, was mir "Speccy" ausspuckt:
Die CPU-Spannung variiert ja je nach Last. Was steht denn im BIOS unterm Reiter Ai Tweaker [http://www.manualslib.com/manual/415092/Asus-P8z77-V-Lx.html?page=69#manual]?
Wenn der Overclock-Tuner, sowie die anderen dazugehörigen Einstellungen auf "auto" stehen, wird das BIOS die CPU wohl nach besten Gewissen selbst übertakten. :nixweiss:

user profile iconJens01 hat folgendes geschrieben Zum zitierten Posting springen:
Und aufgefallen ist mir die Systemtemperatur, die bei mir mit 39°C 10K höher ist.
Ich bin da nicht so bewandert, aber die Temperatur könnte schon eine Rolle spielen.
Bei Halbleitern steigt sogar die Leitfähigkeit mit der Temperatur. Davon abgesehen müsstet ihr auch die Temperaturen zu den selben Zeitpunkten, also während der Berechnung vergleichen. Sein System befand sich z.B. bei den 28°C gerade am Idle (erkennbar an der niedrigen Kernspannung).


Lelf - Mo 27.01.14 17:42

Im Ai-Tweaker steht jetzt alles auf Auto und ich habe neu gemessen:
10000 Stellen 3,266 sec.
100000 Stellen 317,969 sec. Die Auslastung lag bei 12,5% und ca. alle 10 sec wechselten die Cores(0..7). Temperatur der CPU lag bei 38°C, die des Motherboards bei 26°C.

Irgendwie scheint mein Computer nach Tagesform zu arbeiten.

Gruß Lelf


Lelf - Mo 27.01.14 18:54

Inzwischen habe ich ein Tool gefunden, mit dem man die CPU-Frequenz ziemlich genau ermitteln kann: Intel Processor Identification Utility.

This Intel(R) processor supports Intel(R) Hyper-Threading Technology. See http://www.intel.com/info/hyperthreading for more information.
Reported frequency - The speed at which the tested processor is currently operating.
Expected frequency - The highest speed at which the tested processor was manufactured to operate.
Small variations in clock frequencies are common. If there appears to be a significant variation, please contact the PC system manufacturer or microprocessor place of purchase.


Meine Werte jetzt (alle Einstellungen im Bios Ai-Tweaker auf "Auto"):
Reported 3.71 GHz
Expected 3.50 GHz

Gruß Lelf


Jens01 - Mo 27.01.14 19:18

So meine Werte :

Expected Processor Frequency: 3.50 GHz
Reported Processor Frequency: 3.69 GHz

Expected System Bus Frequency: 100 MHz
Reported System Bus Frequency: 100 MHz

Hast Du noch diese Frequenz deines Busses?


Ralf Jansen - Mo 27.01.14 19:19

Hört sich nach normalen Werten für einen Turbo Boost Prozessor an. 3.5 Ghz ist die Basisfrequenz. Wenn die CPU sich ansonsten langweilt (einzelne Kerne befinden sich im Schalfmodus) darf die CPU einzelne Kerne höher Takten solange die sich dann noch im festgelegten TDP bewegen. Bei den i7 Versionen mit einer 7 im Namen (x7xx) biz zu 3.9Ghz. Üblicherweise zerlegt man sich in Windows dieses Verhalten da auch ein Single Thread Process zwischen den Kernen beliebig verschoben wird und somit keiner oder nicht genug Kerne schlafen um ein höhere Taktfrequenz für ~seinen~ Kern zu bekommen.

Versucht mal im Taskmanager die Anwendung genau einem Kern zuzuordnen und denn Rechner ansonsten mit nichts zu belasten dann sollten da vergleichbare Werte mit der maximalen Taktrate rauskommen. Zumindest für alle Turbo Boost oder Turbo Core Prozessoren.


Hochhaus - Mo 27.01.14 19:56

user profile iconLelf hat folgendes geschrieben Zum zitierten Posting springen:
und ich habe neu gemessen:
10000 Stellen 3,266 sec.
100000 Stellen 317,969 sec.
Gruß Lelf


Der Zeitbedarf ist bei meinem Quadratwurzelprogramm quadratisch:

Für 10 x mehr Stellen rechnet das Proggi 100 x länger.

Hochhaus

Aber Vorsicht: Bei sehr wenigen Stellen stimmt das nicht.