Autor |
Beitrag |
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 23.01.14 14:44
Zitat: | Ich rate jetzt mal : 8 GB Arbeitsspeicher  |
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 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: 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
      
Beiträge: 79
Erhaltene Danke: 23
Win 10, Ubuntu
C#, Java, C
|
Verfasst: 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%)
_________________ Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Horst_H
      
Beiträge: 1654
Erhaltene Danke: 244
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: 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
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Do 23.01.14 16:59
Das Programm ist sehr rechenintensiv, es ist kein ausgeklügelter Algorithmus.
Hochhaus
Code:
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 I:=-2 To 4012000 Do Begin S[I] := 0; K[I] := 0; End;
Val(Wurzel.Text, Zahl, R); Val(Stelle.Text, Stellen, R);
N := Trunc(Stellen);
If (Zahl <= 0.0) Or (Zahl >= 1000) Then Begin MessageDlg('Ungültige Zahl', mtError, [mbOk], 0); Stop.Enabled := False; Clear.Enabled := True; Exit; End;
If (Stellen < 1) Or (Stellen > 1000000) Then 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;
I := 1;
While (I <= N) And Go Do Begin
Application.ProcessMessages; If (I Mod 100 = 0) Then Begin ZeitY := GetTickCount - ZeitX; ZeitReal := ZeitY / 1000.0; ZeitR.Text := FloatToStrF(ZeitReal, ffFixed, 6, 3) + ' sec.'; Str(I, AnzStel); StelleX.Text := AnzStel; End;
Stop.Enabled := True; Clear.Enabled := False;
For W := -1 To I Do Begin Inc(K[W + I], 2 * A[W]); End;
K[2 * I] := K[2 * I] + 1;
For W := 2 * I DownTo -1 Do Begin Z := 0; While (K[W] > 9) Do Begin Dec(K[W], 10); Inc(Z); End; Inc(K[W - 1], Z); End;
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);
If (Summe1 >= Summe2) or (A[I] = 9) Then Begin Inc(I); CopyMemory(@K[-2], @S[-2], 2 * I + 3); End
Else Begin Inc(A[I]); CopyMemory(@S[-2], @K[-2], 2 * I + 3); End;
End;
If (Not Go) Then N := I; ZeitY := GetTickCount - ZeitX; ZeitReal := ZeitY / 1000.0;
If (Q_Wurzel = 0.0) Then 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/72) Then Writeln(Fil, ' '); Write(Fil, A[I]); End;
Writeln(Fil, ' '); Writeln(Fil, ' '); Writeln(Fil, 'Ende des Protokolles.'); CloseFile(Fil); ZeitR.Text := FloatToStrF(ZeitReal, ffFixed, 6, 3) + ' sec.'; WurzEdit.Lines.LoadFromFile(Y);
Stop.Enabled := False; Clear.Enabled := True;
SetCursor(LoadCursor(0, PChar(idc_Arrow))); End; End; |
|
|
D.Elphi
      
Beiträge: 128
Erhaltene Danke: 10
Windows 10 Edu x64
Tokyo Starter, BlueJ
|
Verfasst: Do 23.01.14 18:33
AMD FX-6100 (6x 3,3 GHz), 8 GB RAM: 5,156 Sekunden
MfG
D.Elphi
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Jens01
Hält's aus hier
Beiträge: 9
Erhaltene Danke: 3
|
Verfasst: Do 23.01.14 21:25
i7-4770k, 3,5GHz, 8GB-Ram, Win8-64
--> 3,500 sec
gruss Jens
Für diesen Beitrag haben gedankt: Hochhaus
|
|
D.Elphi
      
Beiträge: 128
Erhaltene Danke: 10
Windows 10 Edu x64
Tokyo Starter, BlueJ
|
Verfasst: Do 23.01.14 22:15
Irgendwie funktioniert das bei mir mit den Nachkommastellen nicht...
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Do 23.01.14 22:24
D.Elphi hat folgendes geschrieben : | 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
      
Beiträge: 128
Erhaltene Danke: 10
Windows 10 Edu x64
Tokyo Starter, BlueJ
|
Verfasst: Do 23.01.14 22:37
Nein, ich bezog mich auf dieses Problem:
MfG
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: Hochhaus
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: 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
      
Beiträge: 1098
Erhaltene Danke: 13
Win7 geg. WInXP oder sogar Win98
Rad2007
|
Verfasst: 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
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Fr 24.01.14 13:52
Tilo hat folgendes geschrieben : | 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.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Fr 24.01.14 17:41
D.Elphi hat folgendes geschrieben : | Nein, ich bezog mich auf dieses Problem:
[Bild: Bild]
MfG |
Müsste hiermit behoben sein ! Siehe Beilage.
Einloggen, um Attachments anzusehen!
Für diesen Beitrag haben gedankt: D.Elphi
|
|
OlafSt
      
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: 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.
_________________ Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
|
|
D.Elphi
      
Beiträge: 128
Erhaltene Danke: 10
Windows 10 Edu x64
Tokyo Starter, BlueJ
|
Verfasst: Sa 25.01.14 12:30
|
|
Yankyy02
      
Beiträge: 138
Erhaltene Danke: 21
Win 11 x64
C# (VS 2022 - Rider)
|
Verfasst: 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
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: 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
Hochhaus hat folgendes geschrieben : | 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  ). Und selbst wenn du den selben Code in C++ oder Java schreibst, kann es komplett anders sein.
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Hochhaus 
      
Beiträge: 662
Erhaltene Danke: 8
Windows 7
Delphi XE2
|
Verfasst: Sa 25.01.14 17:14
Xion hat folgendes geschrieben : | 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
|
|
|