Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!
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

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
Jens-Arne Reumschüssel 10.01.19 21:32 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
p. specht 12.01.19 18:38 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
Jens-Arne Reumschüssel 14.01.19 19:32 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
p. specht 14.01.19 19:40 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
Jens-Arne Reumschüssel 14.01.19 19:49 
 Re: Messageloop direkt aufrufen: LÖSUNG GEFUNDEN!  Neu
Jens-Arne Reumschüssel 14.01.19 20:45 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org