Wurzelziehen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

DarkDragon-1993

Betreff: Wurzelziehen

BeitragMo, Dez 15, 2008 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurz und bündig:
Wie kann man Wurzelziehen? Gibt es da irgendeinen Befehl für? Oder eher ne Formel?

Danke für eure Antworten,
mfG DarkDragon-1993

Smily

BeitragMo, Dez 15, 2008 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
sqr
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

tedy

BeitragMo, Dez 15, 2008 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Allerdings würde ich dir eher zur Potenz schreibweise raten da sie schneller ist.
 

DarkDragon-1993

BeitragMo, Dez 15, 2008 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wusst ichs doch^^
Ok, danke an alle

Eingeproggt

BeitragMo, Dez 15, 2008 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
@tedy: Leider falsch.

Zumindest auf meinem PC ist Potenzieren wesentlich langsamer. FOlgender Code zur Zeitmessung:

Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

start=MilliSecs()

For i=1 To 1000000
   x=Sqr(Rand(1,1000))
Next

DebugLog "Sqr: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

start=MilliSecs()

For i=1 To 1000000
   x=Rand(1,1000)^(0.5)
Next

DebugLog "Potenz: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

WaitKey()
End


Bei mir: Sqr: 200ms, Potenzieren 379ms.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

tedy

BeitragMo, Dez 15, 2008 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm
sieht wohl soaus ...

Es liegt daran das er eine Variable potenzieren muss

Bei Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

start=MilliSecs()

For i=1 To 1000000
   x=Sqr(200)
Next

DebugLog "Sqr: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

start=MilliSecs()

For i=1 To 1000000
   x=200^0.5
Next

DebugLog "Potenz: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

WaitKey()
End


Ist die Potenz schneller Very Happy
 

BIG BUG

BeitragMo, Dez 15, 2008 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Junge, BB ist so schlau alle konstanten Berechnungen bereits beim Compilieren aufzulösen...

SQR ist eine Funktion, daher rechnet er zur Laufzeit noch jedesmal die Wurzel, während er beim Potenzieren den Wert schon beim Compilieren ausrechnet und nur noch das Ergebnis zuweist.

Eine Zeitmessung ohne Variable oder Funktion ist daher schlicht sinnlos.
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Nova

BeitragSa, Dez 20, 2008 0:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Und als Beweiß:

Code: [AUSKLAPPEN]
SeedRnd MilliSecs()

start=MilliSecs()

For i=1 To 1000000
   x=Sqr(200)
Next

Text 1, 1, "Sqr: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

start=MilliSecs()

For i=1 To 1000000
   x=200^0.5
Next

Text 1, 15, "Potenz: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

start=MilliSecs()

For i=1 To 1000000
   x=1
Next

Text 1, 29, "Nichts: "+(MilliSecs()-start)+"ms für 1.000.000 Durchläufe"

WaitKey
End


Bei mir siehts so aus:
Sqr: 93 ms
Potenz: 84 ms
Nichts: 84 ms

Anscheinend ist Sqr auch so außerordentlich schnell, wusste ich noch nicht.
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

Nicdel

BeitragSa, Dez 20, 2008 0:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Da es aber kaum Sinn macht nur eine Zahl 1 Millionen mal zu potenzieren ist Sqr vielleicht doch praktischer...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group