Forum: PC-Programmierung Phänomen: Software schneller, wenn Media-Player läuft!


von hebel23 (Gast)


Lesenswert?

Hallo allerseits,

ich hab hier gerade ein eigenartiges Phänomen.
Ich bin dabei eine MFC-Software (VC++7) zu schreiben, die in 
verschiedene MDI-Fenster relativ viele Zeichen und Grafiken ausgibt.

Nun habe ich zufällig entdeckt, dass die Software (die Routinen, die für 
die Anzeige zuständig sind) ca. um Faktor 6-8 schneller wird, wenn der 
Mediaplayer oder Quicktime im Hintergrund gestartet wird. Andere 
Software, die nicht unmittelbar mit Videoausgabe zu tun haben, wie 
IExplorer, Word etc. haben keinen Einfluss.

Mir scheint, als würden Mediaplayer und Co. eine Art "Highspeed" Modus 
in den Anzeigefunktionen (Grafikkartenhardware?) starten.

Hat jemand schon mal ähnliches festgestellt und wie kann man diese 
Funktionen in eigener Software benutzen?

Vielen Dank schonmal
Andreas

von Jolli (Gast)


Lesenswert?

Ich glaube eher, daß der Mediaplayer, das Spionagetool Nummer 1 der 
Firma Microsoft, beim Aufruf der wiederzugebenden Datei der DRMs checkt 
und alle anderen Redmonter Spionagedienste abschaltet. In Summe wird 
dann de PC weniger gebremst!

von Helmut (Gast)


Lesenswert?

Sehr unwahrscheinlich. Tritt dieses Phänomen auch auf, wenn du Winamp 
laufen lässt?

MfG, der Helmut

von *.* (Gast)


Lesenswert?

Benutzt Du Timerfunktionen bzw Multithreading mit sleep o.ä.?
Mediaplayer schaltet wahrscheinlich die Timerauflösung von 10 auf 1 ms 
hoch.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Abhilfe: Machs selber, dazu lässt sich die Win32-API-Funktion 
timeBeginPeriod verwenden.

Einziges Argument: Gewünschte Timerauflösung in msec.
1
#include <mmsystem.h>
2
3
...
4
5
timeBeginPeriod(1);

von Jens B. (sio2)


Lesenswert?

Selbiges Phänomen lässt sich beobachten mei Solitär. Wenn man fertig 
ist, und die Karten alleine "wegfliegen" maus bewegen, und es geht 
schneller ;)

von hebel23 (Gast)


Lesenswert?

Ja genau, ich benutze mehrere Threads und bremse den Anzeigethread mit 
"sleep" aus. Ist nicht besonders elegant - ich weiß - aber das Ganze ist 
noch in der Konzept-Phase. Das Runterschalten der Timerperiode auf 1ms 
klingt erst mal logisch. Ich werde das morgen gleich mal ausprobieren.

Vielen Dank für Eure schnelle Hilfe!

Grüße Andreas

von Johnny (Gast)


Lesenswert?

Vielleicht klinge ich jetzt wie Deine Schwiegermutter, die alles besser 
weiss. Aber ein Sleep sollte man generell meiden wie die Pest.
Normalerweise arbeitet man mit Events, also Ereignissen und dann sollten 
solche Probleme gar nicht erst auftauchen.

Für Deinen Fall, wenn Du das GUI nur ab und zu mal neu aufbauen willst, 
würde ich eher einen Timer aufsetzen, dessen Event dann die gewünschten 
Funktionen/Methoden aufruft.

von hebel23 (Gast)


Lesenswert?

Hallo Johnny,

da gebe ich Dir Recht. Wie gesagt, ich bin gerade am Konzeptionieren. 
Das wird dann alles noch bereinigt und optimiert, wenn das Grundgerüst 
steht.

Im Übrigen war die Funktion "timeBeginPeriod(1)" genau die, die den oben 
beschriebenen Effekt behoben hat. Also vielen Dank nochmal!


Gruß Andreas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.