Autor: Jens-Arne Reumschüssel (---.dip0.t-ipconnect.de)
Datum: 09.01.19 20:50
Hallo zusammen,
im Zusammenhang mit dem Fastmode hätte ich eine allgemeine Frage bzw. Bitte: Ist es möglich, den Profan-Messageloop anders als mit Waitinput aufzurufen?
Waitinput ist nämlich elendiglich langsam, wenn es nur darum geht, Messages zuzulassen und nicht, auf irgendeine Eingabe zu warten. Selbst mit
Waitinput 1
dauert das ganze bei jedem Durchlauf bis zu 15ms, da der Windows-Timer eine zeitliche Auflösung von etwa 15ms besitzt (siehe diverse Beiträge im Internet dazu). Das bedeutet, dass schon bei nur 1000 Schleifendurchläufen die Nutzung von Waintput 1 einen Zeitverlust von bis zu 15 Sekunden (!) mit sich bringt. In einem Profan-Progamm ohne Fastmode läut der Messageloop natürlich extrem viel schneller, er wird ja alle 20 Programmzeilen einmal aufgerufen, ohne dass man das groß merkt. Das kostet offenbar keine 15 Sekunden bei einer Schleife von 20000 Befehlen, wie man mit
whileloop 1,20000
endwhile
leicht herausfinden kann. Es liegt also tatsächlich daran, dass Waitinput 1 ewig herumwartet, obwohl man das sicher nicht gebrauchen kann, da man mit dieser (undokumentierten) Variante von Waitinput ja gerade ausdrückt, dass man nicht warten möchte. Waitinput 1 ist also ein extrem schmutziger, eigentlich gar nicht so bezeichenbarer "Workaround" dafür, dass man manchmal Messages bearbeitet haben muss.
Konkret, damit man die Praxisrelevanz sieht, geht es bei mir um eine Schleife, die meistens viele 1000 Male durchlaufen wird, und die ich gerne durch einen Klick auf einen Button unterbrechbar machen möchte. Aus hier nicht weiter interessierenden Gründen muss das im Fastmode laufen. Dann aber reagiert Profan auf Buttonklicks nicht, wenn der Messageloop nicht aufgerufen wird.
Es wäre also extrem wünschenswert, den Messageloop von Profan anders als mit Waitinput aufrufen zu können. Ist das zur Zeit schon möglich, oder wird es zumindest in künftigen Profan-Versionen möglich sein?
Geht da vielleicht irgendetwas mit @call(...)?
Oder gibt es noch eine andere Möglichkeit, die ich nur gerade nicht sehe?
Beste Grüße, Jens-Arne
|
|