Geschwindigkeit der Beta7

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Deeem2031 hat geschrieben: ...?

Dann wäre es aber langsamer als die PB-Variante - "DOTX * DOTX + DOTY * DOTY" is doch die schnellste Variante...

...ja ich weiß, der Beitrag war eh nich ernst gemeint ;)
Ich glaube, du hast da etwas gründlich missverstanden. Die PB-Gegner die offensichtlich schlechten PB-Code geschrieben haben, sollen dass doch bitte nächstes Mal richtig schlecht machen damit der eigene Vorsprung noch größer wird. Mein Code war für PB gedacht, damit sich so mancher Blitzmaxler der es nötig hat noch viel toller vorkommen kann :roll:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag von Sebe »

Danke, das war mir nicht aufgefallen. Wenn ich wieder zu Hause bin werde ich nochmal alle Source vergleichen, damit auch wirklich alles mit Rechten Dingen zugeht. Naja, am Float Handling von BMX kann ich natürlich nix ändern :? Aber ich bin froh, dass ausser mir noch andere Leute den Source durchsehen. Nur so können Fehler ausgemerzt werden, also danke an dieser Stelle :allright:
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Sebe hat geschrieben:Danke, das war mir nicht aufgefallen. Wenn ich wieder zu Hause bin werde ich nochmal alle Source vergleichen, damit auch wirklich alles mit Rechten Dingen zugeht. Naja, am Float Handling von BMX kann ich natürlich nix ändern :? Aber ich bin froh, dass ausser mir noch andere Leute den Source durchsehen. Nur so können Fehler ausgemerzt werden, also danke an dieser Stelle :allright:
Dann kannst du gleich mal die Auflösung der Zufallsfunktion von bisher 100 auf 10000 oder sogar 100000 erhöhen, damit auch ein für PI angemessener Wert rauskommt (bisher erhält man immer einen Wert um 3.07):

Code: Alles auswählen

    DOTX = Random(100000) / 100000.0
    DOTY = Random(100000) / 100000.0
Ansonsten wird durch das grobe Raster natürlich zu wenig Kreisfläche berechnet, als eigentlich vorhanden. Übrigens kann man sich auch die 2.0 * .. - 1.0 sparen, wozu die gut sein sollen, hab ich noch nicht verstanden.

Also so in etwa:

Code: Alles auswählen

EnableExplicit

Define.f DOTX, DOTY, PI
Define.l time1, time2
Define.q inside, drops, total

#solution = 100000

OpenConsole()
PrintN("MonteCarloPI - PureBasic")
Print("How many drops (0 - 9223372036854775807): ")

drops = ValQ(Input())
total = drops

time1 = GetTickCount_()

While drops > 0

  DOTX = Random(#solution) / #solution
  DOTY = Random(#solution) / #solution
  If DOTX * DOTX + DOTY * DOTY <= 1.0
    inside + 1
  EndIf
  drops - 1

Wend

time2 = GetTickCount_()

PI = 4.0 * inside / total

PrintN("PI (" + Str(total) + " drops) on float: " + StrF(PI, 18))
PrintN("Time needed: " + Str(time2 - time1) + " m/secs")
PrintN("Return to quit...")
Input()
Gesperrt