Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mo Jul 14, 2025 11:36

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Zeitmessung bei multi-core CPUs?
BeitragVerfasst: Mi Aug 01, 2007 09:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

ich hab ein problem bei meinem Flipbook... wer es nicht kennt, das ist eine art media player. Na ja, das problem ist, das ich via QueryPerformanceCounter die zeit messe um exakt auf 25fps zu kommen mit der bildanzeige.. also damit videos etc in korrekter geschwindigkeit laufen.

Das klappt auch wunderbar, nur merkwürdiger weise fängt bei einer multi-core CPU das ganze zu ruckeln an.. und das liegt nicht daran das der rechner ausgelastet ist oder so, sondern nur an der zeitmessung. Denn, wenn ich im Taskmanager dem Flipbook nur eine CPU zuweise läuft es einwandfrei flüssig..

Hat da irgendwer ne idee was ich tun kann?
Im moment wäre mein einziger ansatz dem Flipbook von hause aus nur eine CPU zuzuweisen.. aber das find ich nur wenig optimal da ich auch viele threds zum cachen etc verwende..

Hilfe~

Aya


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 01, 2007 17:29 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Wird deine Zeitmessung in veschiedenen Threads gemacht/wiederholt?

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 01, 2007 17:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Pellaeon hat geschrieben:
Wird deine Zeitmessung in veschiedenen Threads gemacht/wiederholt?

nein :)

Ich habe eine funktion "CalculateFrame" welche das aktuelle frame anhand der errechneten zeit liefert.. ursprünglich wurde die immer im Onidle aufgerufen.. nachdem das aber auch probleme machte hab ich es in einen thread ausgelagert... sprich - es gibt einen thread der endlos läuft und einfach nur immer in ner synchronize-funktion die calculateFrame funktion aufruft. (der thread ruft sie nur auf, sie wird nicht im thread gemacht).

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 01, 2007 19:35 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Der Zähler, der bei QueryPerformanceCounter abgefragt wird, muss nicht auf jeder CPU den gleichen Stand haben. Daher kann es zu Sprüngen kommen, wenn der Thread die CPU wechselt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 01, 2007 21:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
LarsMiddendorf hat geschrieben:
Der Zähler, der bei QueryPerformanceCounter abgefragt wird, muss nicht auf jeder CPU den gleichen Stand haben. Daher kann es zu Sprüngen kommen, wenn der Thread die CPU wechselt.

und.. kann ich da irgendwas gegen tun?
(so vonwegen einen Thread nur für die Zeitmessung erstellen und diesen Thread einer CPU zuweisen oder so?)

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 01, 2007 21:34 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Du kannst mittels SetThreadAffinityMask einstellen auf welchen CPUs der Thread ausgeführt. Ähnlich wie über den Taskmanager aber halt nur für einen einzelnen Thread anstelle des gesammten Prozesses. Denke das sollte schon genügen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 17 Queries | GZIP : On ]