Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

TIMER mit Tastendruck beschleunigen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 25.04.2005, 16:43    Titel: TIMER mit Tastendruck beschleunigen Antworten mit Zitat

Ich habe etwas sehr selzammes entdeckt.
Ich habe ein Programm geschrieben, bei dem ein Bild mit PSET Pixel für Pixel aufegabut wird. Als ich dann och eine kleine IF-Abfrage mit einbaute wurde das Programm plötzlich ungewöhnlich langsam. Dabei machte ich eine erstaunliche Entdeckung:
Wenn ich wärend des Bildaufbaus einfach die ganze Zeit über auf eine Taste drücke, dann geht das ganze viel schneller. Ich habe etwas rum experementiert und konnte den Befehl TIMER, der in der IF-Abfrage benutzt wurde als Schuldigen ausmachen.

Man kann das ganz leicht ausprobieren:
Code:
SCREEN 12

FOR x = 1 TO 600
   FOR y = 1 TO 400
      IF TIMER > 1000 THEN
         PSET (x, y), 1
      ELSE
         PSET (x, y), 2
      END IF
      IF INKEY$ = CHR$(27) THEN END
   NEXT y
NEXT x

In diesem Beispiel wird die Farbfläche nur sehr langsam aufgebaut, es sei den, das man eine Taste runter drückt und gedrückt hält

Durch eine leichte Abänderung ist das Problem nicht mehr da:
Code:
SCREEN 12
Zeit = TIMER

FOR x = 1 TO 600
   FOR y = 1 TO 400
      IF Zeit > 1000 THEN
         PSET (x, y), 1
      ELSE
         PSET (x, y), 2
      END IF
      IF INKEY$ = CHR$(27) THEN END
   NEXT y
NEXT x


Da frägt man sich doch, warum der TIMER-Befehl sich für die Tastertureingaben interessiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 25.04.2005, 22:40    Titel: Antworten mit Zitat

Ja, wirklich interessant, wenn man es unter Windows XP testet, d.h. bei reinem MS-DOS 6.22 gibt es diesen Effekt nicht... :-)

Der Systemmonitor verrät eigentlich bereits alles: XP scheint auch ohne INT 2Fh/AX=1680h bereits gewisse Multitasking-Optimierungen vorzunehmen: Tastenabfragen, bei denen nicht kommt, scheint das Betriebssystem die Rechenzeit zu entziehen. Sobald man Tastendrücke macht, wird ein kurzer Rechenzeit-Boost verpasst, denn die DOS-Anwendung soll ja schliesslich schnell antworten.

Erinnert mich an mein früheriges Apple PowerBook, welches ebenfalls die Rechenleistung bei Tastendruck kurz anhob und dann wieder senkte, so dass entsprechend lange Akkulaufzeiten möglich waren.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mecki
Igel


Anmeldungsdatum: 10.09.2004
Beiträge: 985
Wohnort: Niederbayern

BeitragVerfasst am: 26.04.2005, 14:21    Titel: Antworten mit Zitat

Genauso verhält es sich übrigens, wenn man Screen 13 im Fenster laufen lässt (Alt+Enter).

Dort wird bei Tastendruck auch sehr schnell der Screen refresehd.

Ich glaube es ging auch mit der Strg-Taste (die ja Inkey$ nicht "überlastet", wenn man sie dauerhaft drückt) *g*
_________________
» Yodl.de: So sucht man gestern. verwundert
» Geld verdienen im Netz + ICQ.
» Firefox!
» 100€ zu gewinnen
» FreeBASIC.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger MSN Messenger
ChemicalWarfare



Anmeldungsdatum: 15.09.2004
Beiträge: 152

BeitragVerfasst am: 26.04.2005, 15:08    Titel: Antworten mit Zitat

das gleiche passiert auch ihm fenster wenn man die maus bewegt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz