3.9 Erhöhung der Ausführungsgeschwindigkeit

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

 
@REQUIRE "glgalore"

BeginDoubleBuffer(True)  ; richtet einen Hardware-Doppelpuffer ein

Repeat
    DisableLineHook() ; deaktiviert den "LineHook"
    p_DrawFrame()     ; zeichnet hier das nächste Einzelbild
    EnableLineHook()  ; aktiviert den "LineHook" erneut
    Flip()            ; wartet auf die vertikale Aktualisierung, ...
                      ; und tauschet dann die Puffer aus
    CheckEvent()      ; Callback-Funktion 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