CPU-Auslastung senken.

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

DerHase

Betreff: CPU-Auslastung senken.

BeitragSa, Aug 12, 2006 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich einen Laptop hab, der bei 100% CPU Auslastung sehr viel unangenehm warme Luft auf die Pflanzen meiner Freundin bläßt, hab ich ein wenig rumprobiert, wie man dieses Problem lösen kann. Mit einem Delay wird die CPU zwar entlastet doch es führt ja leider zu sehr komischen ungenauen Ergebnissen. In meinen Code wird nur der erste Teil der Wartezeit mit Delay gewartet, danach gibt es eine Pufferzone die diese komische Ungenauigkeit ausgleicht. Hier der Code:

Code: [AUSKLAPPEN]
Graphics 640,480,0,2

;Ungefähre gewünschte Framezahl hier angeben!
fps# = 66.666

;Hier wird umgerechnet wie lange ein Schleifendurchgang bei gewünschter Framezahl
;dauert.
fpsWait# = 1000 / fps

While Not KeyHit(1)

   ;Zeitmessung am Anfang des Schleifendurchlaufes
   startT# = MilliSecs()

   ;Hier kommen alle Sachen hin die während eines Schleifendurchlaufs passieren sollen.
   For t = 0 To 50
      Oval xpos+ Rand(0,620),Rand(0,460),20,20,1
   Next
   
   
   ;Wenn genügend Zeit vorhanden ist wird zuerst mit "Delay" gewartet und danach den Rest
   ;der Zeit mit einer Schleife. Diese Schleife dient als Pufferzone für das ungenaue "Delay".
   sleepingtime# = (15 - (MilliSecs() - startT#))/1.5
   If sleepingtime > 2 Then Delay sleepingtime
   Repeat : Until startT# + fpsWait# <= MilliSecs()
   
   Flip  0  : Cls
   
   ;Wer will kann sich das ganze in Zahlen anzeigen lassen:
   endT# = MilliSecs()
   Text 30,30,  "Frames pro Sekunde:" + 1000 /  (endT - startT)
   Text 30,60,  "Mit Delay gewartete Millisekunden" + sleepingtime#


Wend

StepTiger

BeitragSa, Aug 12, 2006 22:38
Antworten mit Zitat
Benutzer-Profile anzeigen
schon nett, aber mit nur delay erziehle ich wesentlich bessere ergebnisse bei mir. Man kann ja das delay berechnen, aber mit dieser methode hab ich ne cpu auslastung von 75%
mit delay 10 (also etwa 100 fps) hab ich nur 30%
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Blitzcoder

Newsposter

BeitragSa, Aug 12, 2006 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Am einfachsten ist es Vsync einzuschalten. Wenn ein Spiel Standardmäßig 200FPS hat, und mit Vsync sind es 60-100(je nach Monitor), wird die CPU auch schon sehr entlastet.

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

StepTiger

BeitragSa, Aug 12, 2006 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich find diese variante nett (mal vor einer Zeit gecodet)

Code: [AUSKLAPPEN]
SetBuffer BackBuffer()

max_fps#=120
fps_time#=1000./max_fps#

While Not KeyDown(1)
   While MilliSecs()<nextfps#:Delay 1:Wend:nextfps#=MilliSecs()+fps_time#
   Color 0,0,0
   Rect 0,0,GraphicsWidth(),GraphicsHeight()
   fps#=(19.*fps#+1000./(MilliSecs()-ofps))/20.:ofps=MilliSecs()
   Color 255,255,255
   Text 1,1,fps#
   CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),FrontBuffer()
Wend


0% CPU Auslastung
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Last Anquav Hero

BeitragSo, Aug 13, 2006 0:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Code ist absoluter Müll, bei mir hat der 100% cpuauslastung... probiers mal mit b+ dort ist das mit events sehr gut geregelt. ausserdem wenn man ein spiel hat isses ja wohl egal dass es grad 100% cpu schluckt, denn wenn man zockt macht man ja wohl schlecht noch was andres am pc?

DerHase

BeitragSo, Aug 13, 2006 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
@Steptiger: Nur mit "Delay" hab ich immer komische Timing Probleme, poste mal Deine Variante, bei dem es richtig funktioniert. Bei dem Code den Du unten gepostet hast, hab ich 100% Auslastung.

@Blitzcoder: Welche Blitz Version hast Du? Wenn ich VSync einschalte bleibt bei mir die CPU Auslastung trotzdem auf 100%.

@Last Anquav Hero: Welchen Code meintest Du mit "absolutem Müll"? Ich senke deshalb die CPU Auslastung, weil es bei Laptops sehr nervig ist wenn der Lüfter angeht, ausserdem wenn Du in einem Zug ohne Steckdose sitzt wirst Du Dich über die Entlastung freuen. Ausserdem hat es paar Laptops mit Intel Chips die bei 100% CPU Auslastung so warm werden, dass sie sich abschalten.

Blitzcoder

Newsposter

BeitragSo, Aug 13, 2006 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab die neuste, 1.96

MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

DerHase

BeitragSo, Aug 13, 2006 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@Blitzcoder: Hmm, das ist komisch, bei allen anderen bleibt es auf 100%, kannst mal nen Code posten?

@All: Man kann die 1.5 in der Zeile sleepingtime Zeile durch einen kleineren Wert der über 1 ist ersetzen, so bekommt man noch ein bisschen weniger Auslastung.

Blitzcoder

Newsposter

BeitragSo, Aug 13, 2006 21:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwas halt:

Code: [AUSKLAPPEN]

graphics 1024,768,0,2

setbuffer backbuffer()
seedrnd millisecs()

while not keydown(1)

a=rand(800)
b=rand(600)
c=rand(100)
d=rand(100)

oval a,b,c,d

flip 0
cls
wend
end



So hab ich 100%, bzw. bei mir 50% wegen P4 HT.
Wenn ma da ein flip 1 drauß macht, ist es viel weniger.


MfG Blitzcoder
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

DerHase

BeitragSo, Aug 13, 2006 21:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir hat Flip 0 und Flip 1 100% CPU Auslastung.

aMul

Sieger des Minimalist Compo 01/13

BeitragSo, Aug 13, 2006 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Das leigt daran, das die Vertikale Synkronisation wohl selbst sehr viel Rechenleistung braucht und das dein Prozessor eben nicht schnell genug ist Wink

(WENN man die CPU-Last unbedingt senken möchte, ist Delay allerdings die bessere Variante, weil der Delay-Befehl 0 Leistung braucht. Wo wir gerade dabei sind, Waittimer ist übrigens auch der größte Schwachsinn den es gibt, so viel Leistung wie das Ding braucht Wink )

MfG
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Kleiner satan

BeitragFr, Aug 18, 2006 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst auch einfach den laptop wo anders hinstellen dann trifft die luft nichtmehr die pflanzen^^

DerHase

BeitragFr, Aug 18, 2006 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für Eure konstruktive Kritik! Ich werde bei der neuen Version all das bedenken und etwas machen, das nicht funktioniert. Vielen Dank nochmal an alle.

Last Anquav Hero

BeitragSa, Aug 26, 2006 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Huch! Auch wenn etwas spät: Ich meinte den Code von Steptiger Smile
 

Mr Hopp

BeitragSo, Aug 27, 2006 14:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste dann dochmal die neue Version, wenn du so weit bist, das Problem beschäftigt mich auch sehr Wink

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group