Frage zu 100% CPU Auslastung
Übersicht

FruscianteBetreff: Frage zu 100% CPU Auslastung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo, hat die CPU Auslastung etwas mit der Frameunabhängigkeit zu tun? Ich programmiere Framunabhängig (Allerdings nicht mit einer Bremse oder Waittimer, sondern so wie es im Tutorial Bereich beschrieben wird!) habe aber dennoch immer 100% CPU Auslastung. Soweit ich das sehen kann verschwende ich keine Resourcen. Wenn ich keine Aktion ausführe, wird nur die Spielfigur gezeichnet. Liegt das daran das der Computer versucht die schleifen so schnell wie nur möglich durchlaufen zu lassen? Kann ich dass einschränken ohne Waittimer, denn wenn ich zusätzlich zur Frameunabhängigkeit noch einen waittimer einbaue, ruckeln die Bewegungen.
mfg Frusciante |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Im Tutorialbereich beschrieben? Da steht doch genau drinnen, wie man 100% vermeidet (und vor allem warum mans vermeiden sollte) -> https://www.blitzforum.de/foru...hp?t=25242
mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Frusciante |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Frameunabhängig wie im Tutorialbereich beschrieben! Das Tut über 100% habe ich mir auch schon durchgelesen, allerdings geht es dort ja um grobe Fehler und solche kann ich in meinem Programm nicht finden (ist jetzt auch etwas zu lang um es einfach mal zu posten). Ich habe BB3D und da gibt es ja noch kein Waitevent. Somit habe ich selbst wenn nur die Spielfigur gezeichnet wird 100% Auslastung. | ||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Delay ms
und Command Reference/Timer ansehen ![]() |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Markus2 hat Folgendes geschrieben: Delay ms
Noch etwas Print und Input dazu oder war das alles? Oh stimmt, Goto zum Nachtisch vergessen. =) Genau in Eingeproggts Link steht, dass man Delay vermeiden soll. |
||
![]() |
DerHase |
![]() Antworten mit Zitat ![]() |
---|---|---|
The_Nici hat Folgendes geschrieben: Markus2 hat Folgendes geschrieben:
Delay ms
Noch etwas Print und Input dazu oder war das alles? Oh stimmt, Goto zum Nachtisch vergessen. =) Genau in Eingeproggts Link steht, dass man Delay vermeiden soll. Nici erklär das mal bitte in eigenen Worten warum man Delay nicht nehmen soll. Ich mache es so ähnlich wie wie StepTiger mit Delay, er hat im Codearchiv diesen Thread dazu geschrieben. Funktioniert auch in 2d seine Methode ![]() Edit: Natürlich könnte man in der Zeit in der Delay das Programm anhält auch andere sachen berechnen, aber für den Hausgebrauch sollte es so reichen imho ![]() |
||
Play Satyr! |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Sinn hinter Delay ist das Windows Zeit bekommt was zu tun und
dein Programm nicht in dieser Zeit sinnlose Sachen macht . Sinnlos ist z.B. 500 mal in der Sekunde neu das Bild aufzubauen statt z.B. in 60 Hz wie der Bildschirm . Delay sollte eigentlich gleich der API Funk. Sleep sein . Diese Delay Zeit muß man sich ausrechnen . Waittimer heißt nicht das dein Programm wartet bis ne Zeit x rum ist sondern wenn deine Schleife zu schnell ist wird gewartet bis die Timer Zeit ereicht ist , also ähnlich wie Delay . Wenn das Spiel nicht flüssig läuft kann es auch an blöden NVidia Treibern liegen oder an Diensten/Treibern die alles aus dem Rythmus bringen . |
||
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Waittimer passt sich von Computer zu Computer an, Delay ist einfach fest.
Bei WaitTimer wartet man auf die Frames, udn bei Delay sagt man einfach "Warte so lange!" Btw. die Diskussion gabs schonmal, erst vor ner Woche oder so. |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Delay ist nicht fest , dafür hat es ja den Parameter .
Beide Befehle machen genau das was sie sollen und das die sich von Computer zu Computer anpassen ist irrelevant finde ich . |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann natürlich auch die volle Ladung sowohl
- Timer (auf Bildschirmfrequenz) - Delay (fest auf 5 oder weniger) - Frameunabhängiges programmieren anweden. Dann würde man immer etwas Zeit dem System für andere Dinge lassen (Delay), die maximale Bildaufbaufrequenz nicht überschreiten (Timer) und bei langsamen Rechnern würde dann auch das frameunabhängige programmieren greifen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
The_Nici hat Folgendes geschrieben: Waittimer passt sich von Computer zu Computer an, Delay ist einfach fest.
Bei WaitTimer wartet man auf die Frames, udn bei Delay sagt man einfach "Warte so lange!" Lustig, in Wirklichkeit ist es andersrum: Delay kann ich anpassen und jedesmal genausolange warten wie ich will, um Framerate und Verbrauch auszubalancieren. WaitTimer hingegen arbeitet immer mit der selben Framerate und das dümmste ist, dass ein Programm, wenn es die eingestellten z.B. 60fps nicht ganz schafft, nicht etwa mit 50fps laufen kann, sondern nurnoch mit 30, weils ja wieder auf den nächsten Tick warten muss... es sei denn, man wertet den zurückgegebenen Wert aus, aber frameunabhängig wirds davon trotzdem nicht... |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das mit 30FPS ist übrigens falsch. WaitTimer ist dafür schlau genug programmiert worden (Mark ist doch kein Idiot). ![]() Code: [AUSKLAPPEN] Graphics 400,400,0,2
SetBuffer BackBuffer() timer=CreateTimer(50) wait=16 While Not KeyHit(1) If KeyDown(203) Then wait=wait-1:If wait<0 Then wait=0 If KeyDown(205) Then wait=wait+1 Delay wait Text 20,20,fps+" FPS" Text 20,40,wait+" Wait" msc=MilliSecs() If msc>mts Then mts=msc+501 fps=frm*2:frm=0 Else frm=frm+1 End If WaitTimer(timer) Flip 0 Cls Wend End Die Aussage von The_Nici halte ich übrigens für richtig. Was der Programmierer dann aus Delay macht, ist eine Sache, aber Delay ist von sich aus ''fest''. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: das die sich von Computer zu Computer anpassen ist irrelevant finde ich .
Ist es nicht, denn wenn Du ein eh schon langsames System noch dazu mit einem festen Delaywert ausbremst ist das schlicht und ergreifend Mist. Hier ist der Timer deutlich im Vorteil, denn wenn das System in Verzug gerät wartet er eben nicht mehr. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nun gut, aber ich habe nie wirklich viel von WaitTimer gehalten, sondern mir immer mit Delay und Millisecs einen Ersatz programmiert. Zum einen halt wegen der Frameunabhängigkeit, wenns mal langsamer läuft, zum anderen aber auch, weil sich dann Zeitlupen- und -raffereffekte sehr einfach realisieren lassen ![]() |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frameunabhängigkeit hat aber nichts mit einer Framebegrenzung gemeinsam, ausser das das Wort ''Frame'' in beiden vor kommt. Frameunabhängig musst du in beiden Fällen extra programmieren, und dann ist es auch in beiden Fällen einfach eine Zeitlupenfunktion einzubauen. Mit Delay hätte man eventuell nur den Vorteil, dass man aufgrund einer speziellen Formel es so gestallten könnte, dass der Verlauf zwischen ''Das System abbremsen zu müssen'' und ''Das Spielgeschehen mit erhöhtem Deltawert zu beschleunigen'' weicher gemacht werden kann. Ich bezweifle aber, dass es jemand so in der Form gemacht hat, das der Aufwand im Verhältnis zum Nutzen doch sehr groß ist. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BladeRunner
ich sprach von berechneten Delay Werten ? Wenn man eine Hauptschleifen Zeit vor gibt hat man was übrig am Ende oder nicht . Und Delay 0 tut nem altem langsamen System nicht weh . |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann hab ich deine Formulierung missverstanden, denn was ich von dir Zitierte hört sich so an als wolltest du ein festes delay nehmen. Aber warum soll ich mir das delay mühsam errechnen wenn waittimer dies automatisch für mich macht ? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@BladeRunner
ja, haste missverstanden , war auch nur ne Bermerkung zu einer Antwort . Wenn jemand nicht waittimer benutzen möchte dann mußte wohl bei Delay die Zeit ausrechnen . Gab oben bedenken zu waittimer aber das wurde schon geklärt . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group