Blitz+ 100 % Auslastung

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

ghostproductions

Betreff: Blitz+ 100 % Auslastung

BeitragSa, Apr 25, 2009 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
gibt es eine Möglichkeit, ein Blitz+ Programm so zu schreiben, dass es NICHT immer eine 100 %ige Systemauslastung verursacht?

MfG

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragSa, Apr 25, 2009 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Solche Fragen gab es schon zu hauf und sollte mit der Suchfunktion beantwortet werden. Einfach mal suchen.

MfG
Ironstorm
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 25, 2009 14:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Waitevent(100) püft alle 100 Millisekunden ob überhaupt ein Event vorliegt (nur bei GUI Anwendung)
[BB2D | BB3D | BB+]

Starwar

BeitragSa, Apr 25, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
Das geht. Zeig mal einen Code mit 100% Auslastung und ich sage dir, was du falsch machst.
Ohne Code kann dir keiner Helfen. Logisch oder?
MFG

ozzi789

BeitragSa, Apr 25, 2009 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hurra 100% CPU auslastung!
2 sekunden suche, ist jedoch nur für Games/Grafisches, für Anwendungen benütztz du am besten Waitevent
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Silver_Knee

BeitragSo, Apr 26, 2009 2:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Der eintrag kommt schon wenn man nur 100 bei der suche eintippt... xD
 

ghostproductions

BeitragDi, Apr 28, 2009 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Abrexxes schrieb am Mi, Sep 19, 2007 16:31:

Code: [AUSKLAPPEN]
timer = createtimer (60)
Graphics 640,480,0,2
SetBuffer BackBuffer()

While Not KeyHit (1) ; ESC
;
; Ihrgend was Frame unabhängiges
;
Waittimer timer
Flip 0



Soweit ich weiss, existiert WaitTimer() nicht in Blitz+.


Zitat:
Starwar
schrieb am Sa, Apr 25, 2009 17:53:
Hi,
Das geht. Zeig mal einen Code mit 100% Auslastung und ich sage dir, was du falsch machst.
Ohne Code kann dir keiner Helfen. Logisch oder?
MFG


Hier ein Codestück. Wenn bei WaitEvent() ein $0 in der Klammer steht, läuft alles flüssig, kostet aber eben 100% Ressourcen. Wenn ich z.B. 60 reinschreibe, läuft das Programm abgehackt und die Timer laufen nicht mehr richtig. Dafür kostet es nur noch 1-2% Ressourcen.

Code: [AUSKLAPPEN]
window = CreateWindow("Fenster",0,0,300,300,0,1)

Dim modus(1)
modus(1)=1

Repeat

   While modus(1) = 1

      Select WaitEvent() ; bei $0 flüssiges Arbeiten/100% Auslastung, bei 60 kein flüssiges Arbeiten/1-2% Auslastung
         Case $803: End
      End Select

      Select check_keys()
         Case 122: End
      End Select

      time = MilliSecs()

      Select time - timer
      
         Case 5000:      
            ; tu was
         Case 6000:
            ; tu was
         Case 7000:
            ; tu was
               
      End Select
      
      SetGadgetText label,Int((time-timer))+" sec."
      
   Wend
   
Forever
End


Zitat:
Rallimen
schrieb am Sa, Apr 25, 2009 14:52:
Waitevent(100) püft alle 100 Millisekunden ob überhaupt ein Event vorliegt (nur bei GUI Anwendung)


Ja, ist mir bekannt, s.o.

Zitat:
Silver_Knee
schrieb am So, Apr 26, 2009 2:23:
Der eintrag kommt schon wenn man nur 100 bei der suche eintippt... xD


Dann mach es. Dieser Beitrag hilft aber leider keinem weiter, s.o.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Apr 28, 2009 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Vieleicht solltest du updaten, denn ab BPlus V1.34 ist Waittimer wieder dabei!
[BB2D | BB3D | BB+]

Silver_Knee

BeitragDi, Apr 28, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Anstatt waittimer nimmt man bei b+ Waitevent. Das hilft auch gegen 100% weil es auf ein event des PCs wartet und solang du deinen pc nicht zu schnell zupumpst bleibt die Auslastung dabei gering
 

ghostproductions

BeitragDi, Apr 28, 2009 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Dass es auf Events wartet, ist mir klar. Es soll aber ununterbrochen etwas passieren, nämlich ein Timer laufen. Wenn ich WaitEvent(60) benutze, werden exakte Timerzeiten aber übersprungen.

Ich möchte ununterbrochen etwas ausführen/abfragen, aber ohne 100%. Deshalb nochmal zu meiner Ausgangsfrage, gibt es in Blitz+ die Möglichkeit, ein Programm so zu schreiben? Oder muss ich c benutzen?

Smily

BeitragDi, Apr 28, 2009 16:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, wurde schon gesagt:
Aktuelle b+-version nutzen und dann waitTimer() nutzen

Welche Version von Blitzplus verwendest du denn?

aber ein waitEvent(1) sollte afaik aber auch schon die auslastung drosseln.

grüße,
Smily
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Starwar

BeitragDi, Apr 28, 2009 17:15
Antworten mit Zitat
Benutzer-Profile anzeigen
So mach ich es immer:
Code: [AUSKLAPPEN]

timer = CreateTimer(60)
Repeat
   ev=WaitEvent() ;Wartet auf ein Event <> $0
   es=EventSource()
   ed=EventData()
   If ev=$803 Then
      Exit
   ElseIf ev=$4001 And es=timer Then
      ;TimerTick
   EndIf
Forever

1-2% auf nem 2,3Ghz auf einen Kern reduziert.
MFG
 

ghostproductions

BeitragDi, Apr 28, 2009 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Smily hat Folgendes geschrieben:

aber ein waitEvent(1) sollte afaik aber auch schon die auslastung drosseln.


Sollte klappen, klappt auch Wink

Nur ein Blick in meinen Beispielcode zeigt, dass Events zu exakten Timerzeiten ausgeführt werden sollen. Das werden sie leider NUR mit WaitEvent($0).

Starwar

BeitragDi, Apr 28, 2009 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du meinen Psot überlesen?
Event $4001 ist der Timertick! WaitEvent wartet auf ein Event => Bei einem TimerTick wird Event $4001 ausgegeben => Deine genaue Timerzeit...
MFG
 

ghostproductions

BeitragDi, Apr 28, 2009 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Starwar hat Folgendes geschrieben:
Hast du meinen Psot überlesen?
Event $4001 ist der Timertick! WaitEvent wartet auf ein Event => Bei einem TimerTick wird Event $4001 ausgegeben => Deine genaue Timerzeit...
MFG


Du hast deinen Post erstellt während ich noch am erstellen war.

Also garnichts mit MilliSecs() ?
Es soll auch im deaktivierten/minimiertem Zustand zählen und das zuverlässig. Wenn ich das Fenster verschiebe, hält deine Methode an...

Starwar

BeitragDi, Apr 28, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei deine Methode auch. Beim verschieben von Fesntern wird das Programm immer angehalten... Aber du kannst nach einem Tick den Abstand zu letzten ja weiterhin mit MilliSecs ermitteln oder vielleicht auch mTimerTicks benutzen.

Code: [AUSKLAPPEN]
timer = CreateTimer(60)
Repeat
   ev=WaitEvent() ;Wartet auf ein Event <> $0
   es=EventSource()
   ed=EventData()
   If ev=$803 Then
      Exit
   ElseIf ev=$4001 And es=timer Then
      Print "Zeit seit dem letzten Aufruf dieser Bedingung: "+(millisecs()-zeit))
      zeit = millisecs()
   EndIf
Forever
 

ghostproductions

BeitragFr, Mai 01, 2009 14:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wo habe ich hier den Counter, der mitläuft?

Starwar

BeitragFr, Mai 01, 2009 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
TimerTicks

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group