Re: Primzahlen von 0 bis n
Hi !
@Hador: Wegen des Bool Array Ram Speicher Problems, hat du schon mit PACKED ARRAY getestet ? |
Re: Primzahlen von 0 bis n
Zitat:
Und das ist nicht besonders schnell. negaH hat m.W. eine Routine die 14 s braucht für 1..2^32 ..... (aber die hat er sicherlich nicht in 1/2 h zusammengeflickt) |
Re: Primzahlen von 0 bis n
wenn man die Programmierzeit mit dazuzählt liege ich garnicht mal so schlecht in der Zeit
|
Re: Primzahlen von 0 bis n
Zitat:
Komischerweise ergaben sich folgende Zeiten
Code:
also langsammer als auf meinem alten P4, egal. Komischerweise sind aber meine Berechnung von der Zahl Pi mit Millionen Stellen wiederum mehr als 4 mal schneller -> 1Mio Stellen in 3.5 Sekunden statt eben 13 Sekunden auf dem P4.
1 bis 1000000 = 0.03 sec
1 bis 1000000000 = 12.70 sec 1 bis 2^32-1 = 56.00 sec Die wichtige Frage ist, wie lange brauchen zb. eure Algorithmen um alle Primzahlen zwischen zb. 1000000000 bis 2000000000 zu berechnen ?
Code:
bei meinem Code, allerdings sollte ich erstmal überprüfen warum das Ding auf meinem Laptop so deutlich langsammer ist als auf meinem P4.
1000000000 bis 2000000000 = 17.54 sec
Denn gerade die Bereichberechnung der Primzahlen ist ein Indiz für die Effizenz des Algos. Im Falle des Siebes wie hier müssen nämlich alle Vorgängerprimzahlen ermittelt werden um überhaupt den gwünschten Ausschnittsbereich berechnen zu können. Gruß Hagen |
Re: Primzahlen von 0 bis n
Hm, ich weis ist offtopic, aber könnte es sein das eine Zeitmessung basierend auf dem Time Stamp Counter -> RDTSC und QueryPerfoamnceCounter() auf einem Mehrprozessoren System falsche Werte liefert ?
Das wäre die einzigste Erklärung so auf die Schnelle. Gruß Hagen |
Re: Primzahlen von 0 bis n
Ich würde an Eurer Stelle mal nach dem "Sieve Of Atkins" googeln. Recht flott, wie man sieht. Hier der Output eines Testprogramms:
Zitat:
|
Re: Primzahlen von 0 bis n
guter Tipp Alzaimar :-) dumm ist nur das mein Code nach exakt diesem Sieb arbeitet ;)
zZ. macht mich aber der enorme negative Unterschied von einem P4 1.5Ghz zu einem Dual Core 2.16Ghz Rechner stuzig. Gruß Hagen [edit] Das Messtechniker Sprichwort lautet "wenn du misst dann misst du Mist" ! Meine Zeitberechnungsroutinen basieren auf RDTSC und QueryPerformanceCounter()/Frequency(). Spaßenshalber nun die gleiche Funktion mal parallel mit GetTickCount() gemessen und siehe da 12756 ms mit meiner Messroutinen 4610 ms mit GetTickCount() Ergo: RDTSC in Kombinaton mit QueryPerformanceCounter funktioniert auf Dual Cores nicht sauber. Ein weiteres sehr komoische Verhalten ist das die Messungen mehrmals hintereinander total verrückte Abweichungen ergeben. Es scheint das Powermanagement das die CPUs dynamisch im Takt drosselt schuld zu sein. Jetz muß ich erstmal nach ne besseren Messroutine Ausschau halten. (von wegen meine DECMath routinen wären nur 4 mal schneller als auf einem P4, so wie es aussieht ist es 12 mal schneller). [/edit] |
Re: Primzahlen von 0 bis n
Zitat:
Zitat:
EDIT: Arr irgendwie hab ich deinen letzten Beitrag übersehen :gruebel: Zitat:
|
Re: Primzahlen von 0 bis n
Ja sorry das ich deinen Thread hijacked hab, ich hab hier einen neuen Thread angelegt http://www.delphipraxis.net/internal...=618629#618629
Und defakto ist es so das meine Messroutinen mit mindestens einem Faktor von 3 mal daneben liegen, allerdings eben auch stark abhängig ob die CPUs durch das ACPI gedrosselt werden (das konnte ich schon verifizieren da ich die CPUs auch manuell drosseln kann, per Hotkey). Aber wir sollte das alles im obigen neuen Thread fortsetzen, sorry nochmals. Gruß Hagen |
Re: Primzahlen von 0 bis n
so zurück zum Thema. Alzaimar hat dir ja schon einen Link auf seinen Source gegeben. Wenn du mein DEC, http://www.michael-puff.de/Developer...agen_Reddmann/ , runterlädst findest du in Unit Prime.pas meine Implementation des Siebes. Als Referenz für deine Test wohl ausreichend.
Kleiner Tipp noch: wenn du mit meinen Messroutinen aus dem DEC arbeitest und du hast einen Mehrprozessorenkern dann baue doch die 2. CPU vorher aus, ansonsten misst du Mist ;) Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz