Autor: Jens-Arne Reumschüssel (---.dip0.t-ipconnect.de)
Datum: 14.01.19 19:32
Hallo,
herzlichen Dank für den Test! Daran kann man den Effekt tatsächlich sehr deutlich sehen. Noch etwas eindrucksvoller wird das, wenn man die ebenfalls recht langsamen Textmode-Befehle weglässt und stattdessen settext für ein Static benutzt:
WindowTitle "Messageabholendes Waitinput beschleunigt:"+\
" Lösung von Jens-Arne Reumschüssel testen"
'(CL) CopyLEFT 2019-01 by P.Specht, Vienna/AT/EU
'erweitert von Jens-Arne Reumschüssel
CLS:Randomize:font 2
declare n&,tm&,txt$,ungueltig&,hT&
$IFNDEF COMPILER
txt$="INTERPRETER"
n&=2500
$ELSE
txt$="COMPILER"
n&=4000
$ENDIF
AppendMenuBar 100," "+txt$+" zählt bis "+str$(n&)+\
". ESC-Taste soll erkannt werden und zerstört den laufenden Test!"
hT&=@create("TEXT",%HWnd,"",200,200,50,20)
print "\n OHNE Beschleunigung:",
waitinput 3:sound 200,20:ungueltig&=0
tm&=&GetTickCount
Whileloop n&:settext hT&,@str$(&loop)
waitinput 3
:if %Key="27":ungueltig&=1:break:endif
Endwhile
tm&=&GetTickCount-tm&
ifnot ungueltig&: print tm&,"ms"
else :print "<abgebrochen>":clear ungueltig&
Endif
print "\n NUR Fastmode:",
waitinput 3:sound 200,20:ungueltig&=0
tm&=&GetTickCount
set("Fastmode",1)
Whileloop n&:settext hT&,@str$(&loop)
waitinput 3
:if %Key="27":ungueltig&=1:break:endif
Endwhile
set("Fastmode",0)
tm&=&GetTickCount-tm&
ifnot ungueltig&: print tm&,"ms"
else :print "<abgebrochen>":clear ungueltig&
Endif
print "\n NUR MIT rnd()-Chance:",
waitinput 3::sound 200,20:ungueltig&=0
tm&=&GetTickCount
Whileloop n&:settext hT&,@str$(&loop)
if rnd()>0.95
waitinput 3
:if %Key="27":ungueltig&=1:break:endif
endif
Endwhile
tm&=&GetTickCount-tm&
ifnot ungueltig&: print tm&,"ms"
else :print "<abgebrochen>":clear ungueltig&
Endif
print "\n LÖSUNG von Jens-Arne R.: Fastmode mit %PeekMessage:",
waitinput 3:sound 200,20:ungueltig&=0
tm&=&GetTickCount
set("Fastmode",1)
Whileloop n&:settext hT&,@str$(&loop)
if %PeekMessage
waitinput 3
:if %Key="27":ungueltig&=1:break:endif
Endif
Endwhile
set("Fastmode",0)
tm&=&GetTickCount-tm&
ifnot ungueltig&: print tm&,"ms"
else :print "<abgebrochen>":clear ungueltig&
Endif
print "\n OHNE JEDE ABFRAGE:",
waitinput 3:sound 200,20:ungueltig&=0
tm&=&GetTickCount
Whileloop n&:settext hT&,@str$(&loop)
'
Endwhile
tm&=&GetTickCount-tm&
ifnot ungueltig&: print tm&,"ms"
else :print "<abgebrochen>":clear ungueltig&
Endif
sound 2000,60
Waitinput
END
Und wenn man die settext-Befehle auskommentiert, wird es ganz heftig: Dann dauert %peekmessage um die 50ms und ohne jede Abfrage 1-2ms (im Compiler und auf meinem zugegeben ziemlich schnellen Rechner). Das zeigt die wahre Verzögerung von waitinput 3 am plastischsten.
Beste Grüße, Jens-Arne
|
|