| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| OneCypher 
 
 
 Anmeldungsdatum: 23.09.2007
 Beiträge: 802
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 10:21    Titel: Von Prioritäten und anderen Eigentoren... |   |  
				| 
 |  
				| Zuletzt hatte ich mir ein Eigentor geschossen: Mein Programm lief unter windows ruckelnd ab. So dachte ich mir das ich diesem Programm eine höhere Priorität mittels Taskmanager verschaffe.
 
 Hmm.. worauf stell ich das Programm? .. na klar! "Echtzeit" ... .. und was ist dann passiert? na ratet mal...
 
 Das Programm lief mit einem affenzahn! ... fand ich echt klasse
   
 Leider hatte das Fenster meines Programmes keinen Fokus ...
 Und da mein Programm sämtliche CPU-Zeit für sich veranschlagte gelang es mir auch nicht den Fokus wieder auf mein Programm zu lenken und es auf "normalen" wege zu beenden.
 
 Nichts anderes reagierte mehr! Aber das Programm lief weiter und weiter..
 (Den PC musste ich neustarten, per hardreset!)
 
 Kann man das irgendwie ein wenig kontrollierbarer machen? Die geschwindigkeitsvorteile, das programm in "Echtzeit" laufen zu lassen, wären echt eine überlegung wert!
 
 Da ich meine programme sowohl unter windows als auch unter linux gerne laufen lassen würde, (ohne große code-änderungen) würde ich eine universelle (win-api-unabhängig) lösung sehr begrüßen!
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Sebastian Administrator
 
  
 Anmeldungsdatum: 10.09.2004
 Beiträge: 5969
 Wohnort: Deutschland
 
 | 
			
				|  Verfasst am: 24.09.2007, 12:04    Titel: |   |  
				| 
 |  
				| Naja, vielleicht wäre die Optimierung des Programms selbst sinnvoller als das Herumdoktern an Prioritäten und Abschusssystemen.   
 Generell solltest du in länger durchzuführenden Schleifen
 
 einbauen. Damit kannst du kurz an das OS zurückmelden, dass es jetzt "auch mal was machen darf".
  _________________
 
   Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
 
 Zuletzt bearbeitet von Sebastian am 24.09.2007, 12:06, insgesamt einmal bearbeitet
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 24.09.2007, 12:05    Titel: |   |  
				| 
 |  
				| erstmal wäre es natürlich angebracht, den code zu optimieren. wenn du ihn uns zeigst, können wir schon eher helfen  _________________
 » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| OneCypher 
 
 
 Anmeldungsdatum: 23.09.2007
 Beiträge: 802
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 12:42    Titel: |   |  
				| 
 |  
				| Der Code ist eigentlich prima. Da gibts auch nicht viel zu optimieren. Ist einfach nur eine art cursor der kreuz und quer in einer schleife (abbrechbar durch einen tastendruck) über den bildschirm jagt... Also in etwa so:
 
 
  	  | Code: |  	  | dim x as integer, y as integer dim sx as integer, sy as integer
 screen 17,32
 screeninfo sx,sy
 cls
 
 x= sx / 2
 y = sy /2
 do
 
 x = x + (int(RND*3) -1)
 y = y + (int(RND*3)- 1)
 if x > sx then x = sx
 if y > sy then y = sy
 if x < 0 then x = 0
 if y < 0 then y = 0
 if point (x,y) <> RGB(0,0,0) then
 pset (x,y), RGB(0,0,0)
 else
 pset (x,y), RGB(128,255,128)
 end if
 
 loop until inkey <> ""
 | 
 
 Das ruckeln rührt bei mir wahrscheinlich von irgendeinem dienst oder einem prozess der ab und zu mal cpu-zeit benötigt.
 Desto mehr Priorität ich dem programm gebe desto seltener werden die ruckler.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ytwinky 
 
  
 Anmeldungsdatum: 28.05.2005
 Beiträge: 2624
 Wohnort: Machteburch
 
 | 
			
				|  Verfasst am: 24.09.2007, 17:02    Titel: |   |  
				| 
 |  
				| Hi, ..jeder Code läßt sich optimieren, dieser schreit geradezu danach..
 Hast du in der Befehlsreferenz mal den Befehl IFF() angesehen?
 (In der Referenz steht übrigens auch WIE einer Funktion Werte zugewiesen werden können..)
 Was das Ruckeln angeht: Du könntest ja mal in die Do..Loop ein Sleep 1 einbauen..
 Gruß
 ytwinky
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Michael712 aka anfänger, programmierer
 
 
 Anmeldungsdatum: 26.03.2005
 Beiträge: 1593
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 17:45    Titel: |   |  
				| 
 |  
				|  	  | OneCypher hat Folgendes geschrieben: |  	  | Der Code ist eigentlich prima. Da gibts auch nicht viel zu optimieren. 
 ...
 
 Das ruckeln rührt bei mir wahrscheinlich von irgendeinem dienst oder einem prozess der ab und zu mal cpu-zeit benötigt.
 Desto mehr Priorität ich dem programm gebe desto seltener werden die ruckler.
 | 
 
 
  Also ich weiß nicht, aber wie ytwinky schon sagt, hier gibts einige sachen. Vor allem pset und point verwenden, eine bessere Variante.
 
 
  	  | Code: |  	  | dim x as integer, y as integer, c As uInteger dim sx as uinteger, sy as uinteger
 Dim scr As Uinteger Ptr
 
 screen 18,24
 screeninfo sx,sy
 scr = screenptr
 cls
 
 x = sx / 2
 y = sy / 2
 
 
 do
 c += 1
 x = x + (int(RND*3) -1)
 y = y + (int(RND*3)- 1)
 
 x = iif(x > sx-1, 0, iif(x < 0, sx-1, x))
 y = iif(y > sy-1, 0, iif(y < 0, sy-1, y))
 
 screenlock
 scr[x + y * sx] = iif(scr[x + y * sx] <> &Hff000000, &Hff000000, &H88ff88)
 screenunlock
 
 if c mod 10000 = 0 Then sleep 1, 1
 loop until inkey <> ""
 | 
 
 Noch nicht die beste, aber für dich sollte es reichen...
 (man kann z.B. machen, dass der screen alle 100 durchläufe upgedatet wird, etc)
 _________________
 
  	  | Code: |  	  | #include "signatur.bi" | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| OneCypher 
 
 
 Anmeldungsdatum: 23.09.2007
 Beiträge: 802
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 18:09    Titel: |   |  
				| 
 |  
				| HEILIGE MAKARONIE!! .. ICH HÄTTE ECHT NICH GEDACHT DAS MAN DAS NOCH ANDERS SCHREIBEN KANN!! *thx@all* ... 
 Hmm.. wenn man das sleep rausnimmt kommen die ruckler wieder.. aber das geht doch sicherlich auch auf performance oder?
 wofür steht eigentlich der 2. parameter bei  ?
 In meiner docu steht nur der 1. parameter erklärt.
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ytwinky 
 
  
 Anmeldungsdatum: 28.05.2005
 Beiträge: 2624
 Wohnort: Machteburch
 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| PMedia 
 
 
 Anmeldungsdatum: 14.08.2006
 Beiträge: 2847
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 18:51    Titel: |   |  
				| 
 |  
				|   Gratulation, ytwinky, zu Posting #66666, du Magdeburger Deibl
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ytwinky 
 
  
 Anmeldungsdatum: 28.05.2005
 Beiträge: 2624
 Wohnort: Machteburch
 
 | 
			
				|  Verfasst am: 24.09.2007, 19:02    Titel: |   |  
				| 
 |  
				| Ach ist das peinlich :blush:   ..und auch noch ausgerechnet jetzt, wo der Teufel sein Unwesen auf einem TrÜbPl treibt..
 Ihm sei's gewidmet
   Gruß
 ytwinky
 _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| OneCypher 
 
 
 Anmeldungsdatum: 23.09.2007
 Beiträge: 802
 
 
 | 
			
				|  Verfasst am: 24.09.2007, 19:20    Titel: |   |  
				| 
 |  
				| Bremst  die schleife nicht aus? Also ich hätte im prinzip nichts dagegen wenn die Anwendung kurzzeitig auf Echtzeit läuft. Aber ohne win-api gehts gar nicht? vor allem nicht plattform unabhängig?
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| Jojo alter Rang
 
  
 Anmeldungsdatum: 12.02.2005
 Beiträge: 9736
 Wohnort: Neben der Festplatte
 
 | 
			
				|  Verfasst am: 24.09.2007, 19:25    Titel: |   |  
				| 
 |  
				| Sleep bremst in gewisser Weise, ja, und zwar eine millisekunde. diese millisekunde wird dann dafür ver(sch)wendet, anderen programmen ein bisschen luft zu verschaffen und - ganz wichtig - auch deinem programmfenster! denn ohne das sleep kommt ganz schnell die aufschrift "Programmname  [Reagiert Nicht]". In sofern: Bringt nur vorteile, wenn du's des öfteren aufrufst. _________________
 » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 
  |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		| ytwinky 
 
  
 Anmeldungsdatum: 28.05.2005
 Beiträge: 2624
 Wohnort: Machteburch
 
 | 
			
				|  Verfasst am: 24.09.2007, 19:30    Titel: |   |  
				| 
 |  
				| Wenn du möchtest, daß dein Programm sich harmonisch in das Betriebssytem einbindet, dann gib ihm eine Chance.. _________________
 
 ..also ungefähr so, wie ich GOTO.. 	  | v1ctor hat Folgendes geschrieben: |  	  | Yeah, i like INPUT$(n) as much as PRINT USING.. | 
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |