^0.5 schneller als SQR
Übersicht BlitzBasic Allgemein
grafeBetreff: ^0.5 schneller als SQR |
Mo, Jun 27, 2011 13:19 Antworten mit Zitat |
|
---|---|---|
hallo zusammen,
heute bin auf etwas gestossen: BlitzBasic: [AUSKLAPPEN] Print "Mit Sqr()" 26^0.5 ist deutlich schneller (ohne debugger) als sqr(26), bei mir fast doppelt so schnell. Ich frage mich nun woran das genau liegt . mfg Grafe |
||
XeresModerator |
Mo, Jun 27, 2011 13:38 Antworten mit Zitat |
|
---|---|---|
Ich glaube, das ist der selbe Grund, warum x*0.5 schneller ist als x/2 - Multiplikation & Division ist im Prinzip das selbe, aber die CPU braucht ein paar Zyklen mehr um die Division aus zu drücken. Selbes gilt dann für Potenzen/Wurzeln. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Noobody |
Mo, Jun 27, 2011 14:18 Antworten mit Zitat |
|
---|---|---|
Das liegt daran, dass der Compiler 26^0.5 korrekt als konstanten Ausdruck ansieht und schon beim kompilieren vorausberechnet. Schlussendlich im Programm macht er dort nur noch var# = 5.09902.
Wenn du aber die 26 in eine Variable steckst, sieht der Vergleich ganz anders aus. Dann kann der Compiler den Ausdruck nämlich nicht mehr vorausberechnen, und siehe da, ^0.5 ist ganze 14 Mal langsamer als Sqr(): BlitzBasic: [AUSKLAPPEN] Print "Mit Sqr()" |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
grafe |
Mo, Jun 27, 2011 20:51 Antworten mit Zitat |
|
---|---|---|
Danke Noobody, jetzt versteh ich
mfg Grafe |
||
BBPro2 |
Di, Jul 19, 2011 18:22 Antworten mit Zitat |
|
---|---|---|
@xeres
ist das so ? Oo seltsamer compiler ist das, der das nicht wegoptimiert.... ^^ |
||
XeresModerator |
Di, Jul 19, 2011 18:33 Antworten mit Zitat |
|
---|---|---|
Machen wir einfach den Test:
BlitzBasic: [AUSKLAPPEN] Print "*0.5" Ergibt bei mir ~1800 zu ~2000 - es ist nicht viel, aber für intensive Operationen ist Multiplikation die Rechenmethode der Wahl. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
hecticSieger des IS Talentwettbewerb 2006 |
Di, Jul 19, 2011 19:04 Antworten mit Zitat |
|
---|---|---|
Man kann in etwa folgendes sagen:
Für eine Addition oder Subtraktion benötigt ein Prozessor 1 bis 3 Taktzyklen Für eine Multiplikation benötigt ein Prozessor etwa 15 Taktzyklen Für eine Division benötigt ein Prozessor etwa 80 Taktzyklen Ausgehend eines 486er Prozessor. Ob modernere Prozessoren oder Unterschiede RISC zu CISC oder wie heute üblich pseudo-RISC im Grundbereich optimierter arbeiten kann ich nicht sagen. In Hochsprachen wie Basic sind allerdings die unteren Taktzyklen nur schlecht messbar, da ein ganz anderer Overhead da drüber steht. Die Angaben beruhen auf eine Programmierung über Assembler. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht BlitzBasic Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group