Hurra, 100 % Auslastung

Übersicht BlitzBasic FAQ und Tutorials

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

ozzi789

BeitragSa, Jan 10, 2009 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein hab die Funktion von Krischan in mein Seafighter gepackt und der braucht mehr als 0% Wink
ich probier mal das ganze in einem Singlecore
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

StarGazer

BeitragSa, Jan 24, 2009 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich finde dieses Thema super interessant, da kann man sich nur für bedanken.
Habe mich immer gefragt warum BlitzMax 99% CPU verbraucht, das hat mich stehts geärgert. Bin forh dieses Thema gefunden zu haben. Werde in Zukunft Waittimer ausprobieren, hoffe das klappt einfach.

Nova

BeitragSo, Nov 22, 2009 1:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Drei Fragen:
- Einmal schreibst du in deinen Code "<--für Leute mit Ultra schnellen DUAL Cores !", allerdings kann BlitzBasic doch gar keinen Dual Core ausnutzen, oder habe ich da was falsch gelesen?

- Flip 1 muss ja immer wieder abfragen, ob der Monitor gerade fertig ist und ein neues Bild anfangen will. Muss allerdings nicht WaitTimer auch immer wieder nachfragen, ob jetzt ein neuer Schleifendurchlauf begonnen werden soll? Wie schafft BlitzBasic es da, keine 100% zusammen zu kriegen?

- Ist dieser Code jetzt vollkommen richtig oder habe ich doch wieder etwas übersehen:
Code: [AUSKLAPPEN]
Graphics 640, 480, 0, 2
timer = CreateTimer (40)
Global prim = 1

Repeat
   Print berechne_Primzahlen() ; <-- Was das Programm halt machen soll. ^^
   
   Flip 0
   Cls
   WaitTimer timer
Forever

Function berechne_Primzahlen()
   prim = prim +1
   Return prim
End Function


Sollte man Flip und Cls vor oder nach WaitTimer machen?
Bei Flip 0 flimmert die Zahl manchmal bei mir, bei Flip 1 allerdings habe ich eine höhere Auslastung. Sagt das etwas aus?
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

ComNik

BeitragSo, Nov 22, 2009 2:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1: Ich denke mal das war einfach eine Anspielung auf sinnlose Prozessorverschwendung.

Zu 2: WaitTimer muss abwarten bis dein 40 hertz timer einen durchgang beendet hat, also "tickt"

Zu 3: Sieht nicht schlecht aus. Allerdings versteht ich die Prim Funktion nicht Wink

lg
ComNik

/Ich hoffe mal diese Leichenschändungen gehen in Ordnung der Thread ist ja eigentlich mehr ein FAQ/Tutorial oder?
WIP: Vorx.Engine

Abrexxes

BeitragSo, Nov 22, 2009 2:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ComNik hat Folgendes geschrieben:
Zu 1: Ich denke mal das war einfach eine Anspielung auf sinnlose Prozessorverschwendung.


Exakt, als ich denn Text schrieb war DualCore eher fürs Ego und Signatur als für Power zuständig. Wink

Zitat:
/Ich hoffe mal diese Leichenschändungen gehen in Ordnung der Thread ist ja eigentlich mehr ein FAQ/Tutorial oder?


Geht in Ordnung, die Fragen beziehen sich ja direkt auf denn ersten Post, lieber so ,als Fragen durch alle Abteilungen zu seuchen.

cu

Nova

BeitragSo, Nov 22, 2009 2:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu 1: Okay.

Zu 2: Ja, aber WaitTimer muss ja immer mal wieder nachfragen, ob der Timer gerade "getickt" hat.

Zu 3: Die hat keinen Sinn, sie soll einfach nur für irgendeinen anderen Code stehen. Da habe ich einfach eine kleine Funktion geschrieben, welche von 0 aufwärts zählt. In einem richtigen Programm könnte man da ja die Primzahlen berechnen oder so.

/Naja, ich habe ja nicht irgendeinen Blödsinn geschrieben sondern richtige Fragen gestellt. Da ist das meiner Meinung nach keine "Leichenschändung". Wink
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

Noobody

BeitragSo, Nov 22, 2009 2:30
Antworten mit Zitat
Benutzer-Profile anzeigen
WaitTimer funktioniert eventbasiert. Die Funktion gibt so lange die Kontrolle an das System zurück, bis die von WaitTimer angegebene Anzahl Millisekunden verstrichen ist. Das heisst, dass WaitTimer nicht in einer Schleife überprüft, ob genug Zeit verstrichen ist, sondern vom System solange angehalten wird.

Bei Flip 1/VWait bin ich nicht so sicher, aber soweit ich das verstanden habe, löst das Fertigzeichnen des aktuellen Bildes kein Event aus und kann daher auch nicht rechenschonend abgefragt werden. Intern wird also tatsächlich eine Schleife abgearbeitet, die erst beendet wird, wenn die Bildschirmzeile den unteren Rand erreicht hat.

Daher ist WaitTimer um einiges Rechenschonender wie Flip 1 bzw. VWait.


An sich spielt es keine Rolle, in welcher Reihenfolge Flip 0, WaitTimer und Cls stehen - das kommt ganz auf den persönlichen Geschmack drauf an. Ich zum Beispiel mag es, wenn Cls ganz am Anfang der Hauptschleife und Flip und WaitTimer am Ende stehen, aber andere Programmierer machen es ganz anders. Es gibt aber kein richtig und falsch - ausser natürlich, man hat Cls und Flip direkt hintereinander, dann bekommt man nur ein schwarzes Bild zu sehen Wink
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Nicdel

BeitragSo, Nov 22, 2009 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei deinem Code fehlt SetBuffer(BackBuffer()) Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Nova

BeitragDi, Nov 24, 2009 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, wäre mir früher oder später schon aufgefallen.^^
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group