Autor: Gerd Wieczorek SMail: Berliner Str.1 14959 Trebbin BRD EMail: gwieifjc@sp.zrz.tu-berlin.de (1x wöchentlich kontrolliert) Programm: Prime (Version 2) Dieses kurze Programm berechnet alle Primzahlen bis zu einer angegebenen Grenze und gibt sie in der Shell aus. Die Ausgabe kann ganz normal mit "> Datei" um- geleitet werden. Es wird das Verfahren nach Eratosthenes ( Sieb des ~ ) verwendet. Es wird ein Prozessor >= 68020 benötigt; wenn eine FPU vorhanden ist, kann die entsprechende Version verwendet werden. Daraus folgt: prime_020 für Amiga ohne FPU, prime_020_881 für Amiga mit FPU. Prime kann nur in der Shell aufgerufen werden. Benutzte Befehlsschablone: Prime MAX/A/N,BigBuffer=BB/S,NOOUTPUT=NO/S Bedeutung der Optionen: MAX - Obergrenze für die Suche nach Primzahlen BIGBUFFER - Es wird ein größerer interner Buffer für die Ausgabe verwendet normal: 8 KByte, bei BB: 256 KByte NOOUTPUT - Es werden keine Zahlen ausgegeben. Damit läßt sich die Zeit bestimmen, die die eigentliche Berechnung benötigt. Der Befehl kann während der Ausgabe mit CTRL-C unterbrochen werden. Wenn allerdings ein großer Buffer verwendet und in die Shell ausgegeben wird, kann es ein Weilchen dauern, bis die Ausgabe wieder stoppt. Benötigte Zeiten: Auf meinem Rechner (A500, 68030/14MHz, 68882/20MHz, 4/1 MB) benötigt der Aufruf "Prime MAX BIGBUFFER >prime.txt" folgende Zeiten: MAX 10000 50000 100000 500000 1000000 2000000 3000000 4000000 Zeit (s) 0.2 0.7 1.2 5.5 10.7 21.5 31.9 43.0 Die Zeiten für die alte Version waren leider falsch - ca. um den Faktor 3 zu klein. Deshalb hier die korrigierten Werte: MAX 10000 50000 100000 500000 1000000 2000000 3000000 4000000 Zeit (s) 0.7 2.3 4.4 19.4 37.0 70.0 100.0 130.0 Wie man sieht, ist Prime ungefähr dreimal schneller geworden. Dies war möglich, indem ich den RawDoFmt-Aufruf durch eine selbst programmierte int->ascii Konvertierroutine ersetzte. Ansonsten blieb alles beim Alten. Prime arbeitet mit VMM zusammen und nutzt eventuell vorhandenen virtuellen Speicher. Benötigt werden ca. MAX/8 in KB und Buffer von ca. 10 KB. Aufgrund der vielen Speicherzugriffe verlangsamt virtueller Speicher das Programm enorm. Ebenfalls anzuraten ist das Anschalten der Prozessor-Caches ( ca. 35% schneller bei meinem 68030 ). Die erzeugte Textdatei läßt sich in der Länge abschätzen mit ca. MAX Byte für MAX<100000, sonst ca. 0.6*MAX. Ansonsten würde ich mich über Anmerkungen, Vorschläge, Bugmeldungen freuen. Wer keine Vorschläge hat, sollte mir eine kleine E-Mail mit Geschwindigkeitsangaben ähnlich meiner schicken. Viel Vergnügen beim Ermitteln von Primzahlen ! Es gelten die üblichen Hinweise: Die Benutzung von Prime erfolgt auf eigene Gefahr. Für Schäden, die sich aus der Benutzung von Prime ergeben, bin ich nicht haftbar zu machen. Wenn jemand Prime in einem anderen Archiv einschließen will, muß er mich vorher per e-mail kontakten.