Bitmaps scheller als Arrays?
Verfasst: 17.11.2012 14:03
Hallo Leute,
inzwischen habe ich schon eine Menge über PureBasic dazugelernt und bin mächtig beeindruckt.
Folgendes kann ich mir derzeit nicht erklären: Kann Bitmap-Handling tatsächlich schneller sein, als Array-Handling?
Wenn ich experimentell mit einer For-Next-Schleife eine Bitmap durchsuche, bin ich deutlich schneller, als in einem
zweidimensionalen Array. Wie kann das sein? Arrays sind doch Basic-intern und für Bitmaps müssen
Betriebssystem-Unterroutinen aufgerufen werden, oder nicht? Oder mache ich einen anderen Fehler?
Bei mir braucht die Bitmap-Schleife 156 Millisekunden, die Array-Schleife 281 Millisekunden. Debug-Modus ist aus.
inzwischen habe ich schon eine Menge über PureBasic dazugelernt und bin mächtig beeindruckt.
Folgendes kann ich mir derzeit nicht erklären: Kann Bitmap-Handling tatsächlich schneller sein, als Array-Handling?
Wenn ich experimentell mit einer For-Next-Schleife eine Bitmap durchsuche, bin ich deutlich schneller, als in einem
zweidimensionalen Array. Wie kann das sein? Arrays sind doch Basic-intern und für Bitmaps müssen
Betriebssystem-Unterroutinen aufgerufen werden, oder nicht? Oder mache ich einen anderen Fehler?
Bei mir braucht die Bitmap-Schleife 156 Millisekunden, die Array-Schleife 281 Millisekunden. Debug-Modus ist aus.
Code: Alles auswählen
#size = 4096
#size_1 = #size -1
; x.u = 0
; y.u = 0
; p.w = 0
OpenConsole()
PrintN("Konsole")
CreateImage(bitmap, #size, #size) ; Bitmap-Test
StartDrawing(ImageOutput(bitmap))
t = ElapsedMilliseconds()
For y = 0 To #size_1 ; ImageHeight(bitmap) -1
For x = 0 To #size_1 ; ImageWidth(bitmap) -1
p = Point( x, y)
Next x
Next y
t = ElapsedMilliseconds() - t
StopDrawing()
; Debug("Bitmap")
; Debug(t)
PrintN("Bitmap")
PrintN(Str(t))
Dim tafel.w(#size, #size) ; Array-Test
t = ElapsedMilliseconds()
For y = 0 To #size_1
For x = 0 To #size_1
p = tafel( x, y)
Next x
Next y
t = ElapsedMilliseconds() - t
StopDrawing()
; Debug("Tafel")
; Debug(t)
PrintN("Tafel")
PrintN(Str(t))
Delay(5000)