Dabei ist mir das selbe aufgefallen wie bei der älteren Demoversion. Nämlich das der Compiler sehr unterschiedlich schnellen Code erzeugt wie an folgenden Beispiel zu sehen ist.
(Und ja ich hab den Debugger ausgeschaltet)
Code: Alles auswählen
#ScreenWidth = 1920
#ScreenHeight = 1080
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "DirectX is needed.",0)
EndIf
If OpenScreen(#ScreenWidth, #ScreenHeight, 32, "PB Plasma")
zeit=ElapsedMilliseconds()
RGB=255 <<24+255<<16+255<<8+0
If StartDrawing(ScreenOutput())
Buffer = DrawingBuffer() ; Get the start address of the screen buffer
Pitch = DrawingBufferPitch() ; Get the length (in byte) took by one horizontal line
PixelFormat = DrawingBufferPixelFormat() ; Get the pixel format.
For d=1 To 100 ;100 x Screen mit Pixel beschreiben
For y = 0 To #ScreenHeight-1
For x = 0 To #ScreenWidth-1 ;Rechne alles in der innersten Klammer (auch y, nur Test)
;Var 1 Direkt in Klammer
;PokeL(buffer+Pitch*y+x*4,RGB) ;940 Millisec
;Var 2
;b=buffer+Pitch*y
;b=b+x*4
;PokeL(b,RGB) ;1920 Millisec
;Var 3
;h=Pitch*y
;b=x*4
;hb=h+b
;PokeL(buffer+hb,RGB) ;1656 Millisec
;Var 4
b=buffer+pitch*y+x*4
PokeL(b,RGB) ; 2625 Millisec
Next
Next
Next
StopDrawing()
EndIf
ExamineKeyboard()
FlipBuffers()
Else
MessageRequester("Error","Can't open the screen !",0)
EndIf
MessageRequester("Zeitr",Str(ElapsedMilliseconds()-zeit),0)
Des weiteren ist mir aufgefallen das Divisionen 3 mal länger (3x!) brauchen als in C oder z.b. Blitzbasic. Auch Zuweisungen zu Integer-Feldern benötigen die doppelte Zeit als in Blitz3D. Bei Floating ist der Wert allerdings gleich. Bin ich der erste der das bemerkt ? Lösungen ? Bei den 3D Möglichkeiten scheint auch viel Luft nach oben zu sein zumal alle wichtigen Befehle zu fehlen scheinen. Ogre nun ja.... Ich weiss die Neuen motzen immer Kann mir da trotzdem jemand helfen ?
Edit by NicTheQuick: Code-Tags gesetzt