Buchempfehlung
Visual Basic 6 Kochbuch
Visual Basic 6 Kochbuch
Viele praktische Tipps zum Programmieren mit Visual Basic 6, die sich oft auch auf FB übertragen lassen. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

fb:porticula NoPaste

Info
Info / Hilfe
Liste
Übersicht / Liste
Neu
Datei hochladen
Suche
Quellcode suchen
Download
Dateidownload

POINT-Ersatz (Inlineasm)

Uploader:RedakteurVolta
Datum/Zeit:22.08.2011 09:18:19

Screen 18, 32
Dim As Double lastTime, ersteZeit, zweiteZeit, dritteZeit
Dim As ULongInt counter1, counter2, counter3
Dim As Integer x, y, z = 500
Dim As Any Ptr bild = ImageCreate(z, z,&hFF000000)

lastTime = Timer
For y = 0 To z-1
    For x = 0 To z-1
        If Point(x, y, bild) = &hFF000000 Then
            counter1 += 1
        EndIf
    Next
Next
ersteZeit = Timer - lastTime

lastTime = Timer
For x = 32 To (z*z*4)+32-1 Step 4
    If *Cast(Integer Ptr, bild+x) = &hFF000000 Then
        counter2 += 1
    EndIf
Next
zweiteZeit = Timer - lastTime


lastTime = Timer
x=(z*z)                 'Anzahl Farbpixel
y=Cast(Integer,bild)+32 'Startadresse
Asm
    mov ebx, dword ptr [x] 'Anzahl Farbpixel
    mov edx, dword ptr [y] 'Startadresse
    Xor ecx, ecx           'Zähler=0
    LLoop1:
    mov eax, [edx]         'Farbpixel holen
    And eax, &hffffff      'nur RGB
    jnz LLoop2             'nicht 0, dann nicht zählen
    inc ecx                '+=1 Pixel schwarz
    LLoop2:
    add edx, 4             '+=4 Adresse
    dec ebx                '-=1 Pixel
    jnz LLoop1
    mov dword ptr [counter3], ecx
End Asm
dritteZeit = Timer - lastTime

Print "point() :", ersteZeit
Print "Pointer :", zweiteZeit;" ";fix(ersteZeit/ zweiteZeit);" x schneller!"
Print "Inlineas:", dritteZeit;" ";fix(ersteZeit/ DritteZeit);" x schneller!"
Print
Print "Erstes  Ergebnis:", counter1
Print "Zweites Ergebnis:", counter2
Print "Drittes Ergebnis:", counter3

ImageDestroy (bild)
Sleep