Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 24.09.2007, 11: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, 13: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, 13: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, 13: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, 13: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, 18: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 _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 24.09.2007, 18: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, 19: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, 19: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, 20: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 _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 24.09.2007, 20: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, 20: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, 20:30 Titel: |
|
|
Wenn du möchtest, daß dein Programm sich harmonisch in das Betriebssytem einbindet, dann gib ihm eine Chance.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
|