![]() |
modulo-Beschleunigung
Hallo,
ich habe ein Programm geschrieben, das etwas langsam läuft, weil darin viele mod-Operationen vorkommen. Es wird immer wieder n mod x, x € einer Gruppe von acht vorkommenden Zahlen gerechnet. Kann man das beschleunigen?? |
Re: modulo-Beschleunigung
Sind diese Zahlen in der Form 2^x?
|
Re: modulo-Beschleunigung
nein, sind sie leider nicht. Aber ich kenne sie schon vor Durchlauf des Programms, könnte sie also in einen array schreiben und irgendetwas damit machen.
|
Re: modulo-Beschleunigung
Zeig mal ein bisschen Code ..
|
Re: modulo-Beschleunigung
Hi, ich muß immer wieder Zahlen n auf ihre modulo-Reste testen, diese Schleife wird sehr häufig durchlaufen:
Delphi-Quellcode:
Von allgemeinerem Interesse ist das Problem vielleicht bei Primzahl-Sieben.
n := ...
r := n mod 17; if r = 1 then begin ... end else if r = 4 then begin ... end; Mein Eratosthenes-Sieb braucht auf meiner alten Gurke für Primzahlen < 10^9 ca 40s. Da ich Primeln bis 10^12 brauche, bin ich auf Atkin (siehe wiki) umgestiegen. Dort fallen viele Rechnungen modulo 12 an. z.B.:
Delphi-Quellcode:
Durch die ganzen modulos läuft Atkin bei mir noch langsamer als Eratosthenes, was eigentlich nicht sein sollte.
n := ...
r := n mod 12; if (r = 1) or (r = 5) then Sieve.Bits[n] := not Sieve.Bits[n]; Da gibts doch bestimmt irgendwelche Tricks?! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz