3.8 Erhöhung der Ausführungsgeschwindigkeit

Um die Geschwindigkeit der rohen Ausführung Ihres Skripts zu erhöhen, können Sie die interne Funktion "LineHook" von Hollywood mit dem Befehl DisableLineHook() deaktivieren und mit EnableLineHook() wieder aktivieren. Dies wird die Ausführungsgeschwindigkeit Ihres Skripts erheblich verbessern, falls beim Zeichnen des nächsten Einzelbildes viel Hollywood-Code ausgeführt werden muss. Beachten Sie jedoch, dass Sie "LineHook" für jedes von Ihnen gezeichnete Einzelbild abermals aktivieren müssen oder Ihr Fenster reagiert nicht mehr. So könnte eine geschwindigkeitsoptimierte Implementierung der Hauptschleife aussehen:

 
@REQUIRE "rebelsdl"

BeginDoubleBuffer(True)  ; Richtet einen Hardware-Doppelpuffer ein

Repeat
    DisableLineHook() ; deaktivieren Sie den LineHook, während Sie den
                      ; nächsten Rahmen zeichnen
    p_DrawFrame()     ; zeichnet hier den nächsten Rahmen
    EnableLineHook()  ; aktiviert den LineHook erneut
    Flip()            ; wartet auf die vertikale Aktualisierung,
                      ; und tauscht dann die Puffer aus
    CheckEvent()      ; Ereignis-Callback ausführen
Forever

Beachten Sie, dass Sie hier nur einen Geschwindigkeitsunterschied bemerken, wenn p_DrawFrame() viele Zeilen Hollywood-Code ausführt. Wenn p_DrawFrame() nur aus 20 Codezeilen besteht, werden Sie keinen Unterschied bemerken. Es ist nur mit Hunderten von Codezeilen oder langen Schleifen bemerkbar.

Weitere Informationen finden Sie in der Dokumentation von DisableLineHook() und EnableLineHook() im Hollywood-Handbuch.


Navigation zeigen