 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
MegaFritz
Anmeldungsdatum: 22.11.2008 Beiträge: 5
|
Verfasst am: 22.11.2008, 14:04 Titel: FreeBasic manchmal langsam |
|
|
Hallo alle zusammen,
ich bin Student und habe seit diesem Semester mit FreeBasic zu tun.
Da ich mich derzeit mit Windkraftanlagen beschäftige, dachte ich mir ich "zeichne" mir ein Windrad in FreeBasic und lasse die Rotorblätter drehen.
Soweit so gut, das hab ich alles noch hinbekommen.
Doch nun mein Problem:
Ich habe den Befehl SLEEP benutzt, um eine Verzögerung der Rotation zu ermöglichen. Dabei ist mir aufgefallen, dass manchmal folgendes passiert:
1. zw. SLEEP 1 , SLEEP 5 und SLEEP 10 gibt es keinen Unterschied.
Das Programm läuft so ab, als wäre es immer auf SLEEP 10. (rein gefühlsmäßig....für SLEEP 20 läuft das ganze langsamer ab)
Wenn ich das Programm kompiliere, ändert sich nichts daran.
2. Ich schalte mein Laptop am nächsten Tag ein, und es funktioniert.
Ich führe einen Neustart durch, und es funktioniert wieder nicht.
Während der ganzen Zeit laufen keine anderen Programme und meine Prozessorauslaustung liegt bei lediglich 2%.
Ich habe das Gefühl, dass der Prozessor manchmal nicht richtig anspringt.
Bei meinem Kollegen läuft der Prozessor im nu bei 50 - 100 %.
Mein Professor hat das gleiche Problem wie ich, manchmal läufts schnell und manchmal nicht. Warum? Keine Ahnung.
Zu meinem Laptop:
Ich habe einen Core Duo Prozessor: 2 x 2166 MHz
2 x 1Gb Ram (667 MHz)
Geforce 7900 GS (256 MB PCI Express)
Windows Vista 32 Bit
Energiemodus: Höchstleistung
Also an der Hardware kanns eigentlich nicht liegen....so gefräßig ist FreeBasic auch nicht. Und wenn dann auch noch der Prozessor über 5% Last nicht kommt.....
An Windows Vista liegts auch nicht....Mein Prof hat nämlich Windows XP
Meine Vermutung: Treiber Problem.
Hat jemand eine Idee oder vielleicht sogar die Antwort auf mein Problem?
Danke schonmal! |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.11.2008, 14:42 Titel: |
|
|
Da Windows ein Multitasking/-threading-System ist, steht deinem Programm nicht die komplette CPU-Zeit zur Verfügung. Um den Anschein der Parallelität aller Programme zu gewährleisten, bekommt jedes Programm eine Zeitscheibe zugeteilt, in der es den Prozessor benutzen darf bzw. in der der Scheduler des Betriebssystems das Programm zur Ausführung aktiviert. Dabei können die Programme ihre Zeitscheibe auch vorzeitig wieder abgeben, wenn es gerade nichts zutun gibt. Diese nicht aufgebrauchte Zeit steht dann wieder anderen Prozessen zur Verfügung.
Nun kanns aber durchaus sein, dass du dein Programm ausführst und gleichzeitig auch einige andere Programme der Meinung sind, gerade jetzt etwas tun zu müssen. Deswegen ist SLEEP für die Geschwindigkeitsregulierung relativ ungeeignet.
Bessere Ergebnisse erzielst du mit time based movement, d.h. egal wie viel Prozessorzeit dein Programm zugeteilt bekommt/zur Verfügung hat, das Windrad dreht sich immer gleich schnell. Stormy hat dazu auch mal ein ausführliches Tutorial gepostet. _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
|
|
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.
|
|