WritePixelFast und Plot

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Mashed Crashed

Betreff: WritePixelFast und Plot

BeitragSo, Feb 25, 2007 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Moinmoin,

Ich wollte nur mal aus reinem Spaß ein Mal Programm machen, dabei bin ich auf folgendes gestoßen. Plot arbeitet schneller als Writepixelfast

Das sieht man im folgenden Beispiel:
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
SeedRnd MilliSecs()

font = LoadFont("verdana",64)
Dim grafik(640,480,3)

SetFont font

Repeat
Cls
Color 155,155,155
Rect 0,0,5,480
Rect 0,0,640,5
Rect 635,0,640,480
Rect 0,475,640,480

start = MilliSecs()

For I = 1 To 640
 For P = 1 To 480

;WRITE-PIXEL-FAST
  rgb = Rnd(0,255)*$10000+Rnd(0,255)*$100+Rnd(0,255)
  LockBuffer BackBuffer()
  WritePixelFast I,P,rgb
  UnlockBuffer BackBuffer()

;PLOT
;  Color Rnd(0,255),Rnd(0,255),Rnd(0,255)
;  Plot I,P

 Next
Next

ende = MilliSecs()

Color 0,0,0

Text 10,10," ZEIT:" + (ende-start)

Flip
Until KeyHit(1)


Bei Writepixelfast zeigt der mir immer Zahlen zwischen 1400 und 1480 an, bei Plot hingegen zwischen 910 und 940.


Das ist eine halbe Sekunde langsamer bzw schneller.

Nun die Frage, mach ich irgendwo was falsch, oder gibt es eine noch schnellere Möglichkeit Pixel zuschreiben. Mein Malprogramm soll schließlich nicht so doll ruckeln ^^

Eingeproggt

BeitragSo, Feb 25, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann diese Zeitmessung nicht bestätigen.

Bei mir siehts so aus:
WritePixelFast: ~2600
Plot: ~4400
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

StepTiger

BeitragSo, Feb 25, 2007 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Abgesehen davon, kommen deine verfälschten Ergebnisse durch das ständige LockBuffer, UnlockBuffer

Meine Ergebnisse mit meinem Code:
Plot: 1791
WritePixelFast: 58

hier mal mein (dein umgeformter) code:
Code: [AUSKLAPPEN]
Graphics 640,480
SetBuffer BackBuffer()
SeedRnd MilliSecs()

mode=1

font = LoadFont("verdana",64)
Dim grafik(640,480,3)

SetFont font

Repeat
Cls
Color 155,155,155
Rect 0,0,5,480
Rect 0,0,640,5
Rect 635,0,640,480
Rect 0,475,640,480

start = MilliSecs()

If mode=1 Then LockBuffer BackBuffer()
For I = 1 To 640
For P = 1 To 480

;WRITE-PIXEL-FAST
If mode=1
   rgb = Rnd(0,255)*$10000+Rnd(0,255)*$100+Rnd(0,255)
   WritePixelFast I,P,rgb
Else
   Color Rnd(0,255),Rnd(0,255),Rnd(0,255)
   Plot I,P
EndIf
Next
Next
If mode=1 Then UnlockBuffer BackBuffer()


ende = MilliSecs()

Color 0,0,0

Text 10,10," ZEIT:" + (ende-start)

Flip
Until KeyHit(1)

Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 25, 2007 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du Lockbuffer raus aus der Schleife setzt, dann hast du das gleiche etwa 50mal schneller. Wink
Code: [AUSKLAPPEN]
Graphics 640,480,0,2
SetBuffer BackBuffer()

While Not KeyHit(1)
 Color 155,155,155
 Rect 0,0,5,480
 Rect 0,0,640,5
 Rect 635,0,640,480
 Rect 0,475,640,480

 start = MilliSecs()

 LockBuffer BackBuffer()
  For x = 0 To 639
   For y = 0 To 479

    ;WRITE-PIXEL-FAST
    rgb = Rnd(0,255)*$10000+Rnd(0,255)*$100+Rnd(0,255)
    WritePixelFast x,y,rgb
    ;Plot
 ;   Color Rnd(0,255),Rnd(0,255),Rnd(0,255)
 ;   Plot x,y
   Next
  Next
 UnlockBuffer BackBuffer()

 ende = MilliSecs()
 Color 0,0,0:Rect 0,0,110,30,1
 Color 255,0,0:Text 10,10," ZEIT:" + (ende-start)
 Flip
 Cls
Wend
End
 

Mashed Crashed

BeitragSo, Feb 25, 2007 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Achsooooooo,
ok ^^ darauf hätte ich auch komm könn, aber trozdem danke an alle Wink

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group